SearchModelTrait.php 959 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace backend\models\search;
  3. use Yii;
  4. trait SearchModelTrait
  5. {
  6. public function search($filters)
  7. {
  8. /**
  9. * @var $query \yii\db\ActiveQuery
  10. */
  11. $query = static::find();
  12. /**
  13. * 查询过滤
  14. */
  15. $params = Yii::$app->getRequest()->getQueryParams();
  16. if(count($filters) == 0 || !isset($params[$this->formName()]))
  17. {
  18. return $query;
  19. }
  20. $this->load($params);
  21. foreach ($filters as $filter) {
  22. if (strncmp($filter, "%", 1) == 0) {
  23. $filter = substr($filter, 1);
  24. $query->andFilterWhere([
  25. 'like',
  26. $filter,
  27. $this->{$filter}
  28. ]);
  29. } else {
  30. $query->andFilterWhere([
  31. $filter => $this->{$filter}
  32. ]);
  33. }
  34. }
  35. return $query;
  36. }
  37. }
  38. ?>