OrderLimitCriteria.php 878 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. /**
  3. * 排序条件限制规范.
  4. *
  5. * @author nj
  6. * @date 2021-01-16 17:38:16
  7. */
  8. namespace App\Repositories\Criterias;
  9. use Illuminate\Database\Eloquent\Builder;
  10. use KZ2\Laravel\Repositories\Contracts\RepositoryInterface;
  11. use KZ2\Laravel\Repositories\Criteria\Criteria;
  12. class OrderLimitCriteria extends Criteria
  13. {
  14. private $order = [];
  15. private $limit = 0;
  16. public function __construct($order = [], $limit = 0)
  17. {
  18. $this->order = $order;
  19. $this->limit = $limit;
  20. }
  21. public function apply($model, RepositoryInterface $repository)
  22. {
  23. if (!empty($this->order)) {
  24. foreach ($this->order as $item) {
  25. $model = $model->orderBy($item[0], $item[1]);
  26. }
  27. }
  28. if (!empty($this->limit)) {
  29. $model = $model->take($this->limit);
  30. }
  31. return $model;
  32. }
  33. }