AnnouncePagesCriteria.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * 代理分页查询.
  4. *
  5. * @author nj
  6. * @date 2021-01-23 15:35:04
  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 AnnouncePagesCriteria extends Criteria
  13. {
  14. private $params = [];
  15. public function __construct($params = [])
  16. {
  17. $this->params = $params;
  18. }
  19. /**
  20. * @param Builder $model
  21. * @param RepositoryInterface $repository
  22. * @return mixed|void
  23. */
  24. public function apply(
  25. $model,
  26. RepositoryInterface $repository
  27. ) {
  28. if (!empty($this->params['uid'])) {
  29. $model = $model->where('uid', $this->params['uid']);
  30. }
  31. if (isset($this->params['type'])) {
  32. $type = intval($this->params['type']);
  33. $model = $model->where('type', $type);
  34. }
  35. if (isset($this->params['status'])) {
  36. $status = intval($this->params['status']);
  37. $model = $model->where('status', $status);
  38. }
  39. if (isset($this->params['title'])) {
  40. $title = trim($this->params['title']);
  41. $model = $model->where('title', 'LIKE' , '%'.$title.'%');
  42. }
  43. return $model;
  44. }
  45. }