OrderLimitCriteria.php 872 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * 排序条件限制规范.
  4. *
  5. * @author jim <jim458734573@gmail.com>
  6. * @date 2020-01-16 17:38:16
  7. */
  8. declare(strict_types=1);
  9. namespace App\Repositories\Criterias;
  10. use KZ2\Repositories\Contracts\RepositoryInterface;
  11. use KZ2\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. }