AdminLogSearch.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2016-04-01 23:29
  7. */
  8. namespace backend\models\search;
  9. use Yii;
  10. use backend\behaviors\TimeSearchBehavior;
  11. use backend\components\search\SearchEvent;
  12. use common\models\AdminLog;
  13. use yii\data\ActiveDataProvider;
  14. class AdminLogSearch extends AdminLog implements SearchInterface
  15. {
  16. public $admin_username;
  17. /**
  18. * @inheritdoc
  19. */
  20. public function rules()
  21. {
  22. return [
  23. [['description', 'created_at'], 'string'],
  24. [['user_id'], 'integer'],
  25. [['route'], 'string', 'max' => 255],
  26. ['admin_username', 'safe']
  27. ];
  28. }
  29. public function behaviors()
  30. {
  31. return [
  32. [
  33. 'class' => TimeSearchBehavior::className(),
  34. 'timeAttributes' => [AdminLog::tableName() . '.created_at' => 'created_at'],
  35. ]
  36. ];
  37. }
  38. /**
  39. * @param array $params
  40. * @param array $options
  41. * @return ActiveDataProvider
  42. * @throws \yii\base\InvalidConfigException
  43. */
  44. public function search(array $params = [], array $options = [])
  45. {
  46. $query = AdminLog::find()->orderBy(["id"=>SORT_DESC]);
  47. $query->joinWith(['user']);
  48. /** @var ActiveDataProvider $dataProvider */
  49. $dataProvider = Yii::createObject([
  50. 'class' => ActiveDataProvider::className(),
  51. 'query' => $query,
  52. ]);
  53. $dataProvider->setSort([
  54. 'attributes' => [
  55. 'user_username' => [
  56. 'asc' => ['admin_user.id' => SORT_ASC],
  57. 'desc' => ['admin_user.id' => SORT_DESC],
  58. ],
  59. 'id' => [
  60. 'asc' => ['admin_log.id' => SORT_ASC],
  61. 'desc' => ['admin_log.id' => SORT_DESC],
  62. ],
  63. 'created_at' => [
  64. 'asc' => ['created_at' => SORT_ASC],
  65. 'desc' => ['created_at' => SORT_DESC],
  66. ],
  67. 'route' => [
  68. 'asc' => ['route' => SORT_ASC],
  69. 'desc' => ['route' => SORT_DESC],
  70. ],
  71. 'description' => [
  72. 'asc' => ['description' => SORT_ASC],
  73. 'desc' => ['description' => SORT_DESC],
  74. ],
  75. ]
  76. ]);
  77. $this->load($params);
  78. if (! $this->validate()) {
  79. return $dataProvider;
  80. }
  81. $query->andFilterWhere(['id' => $this->id])
  82. ->andFilterWhere(['like', 'route', $this->route])
  83. ->andFilterWhere(['like', 'description', $this->description])
  84. ->andFilterWhere(['like', 'username', $this->admin_username]);
  85. $this->trigger(SearchEvent::BEFORE_SEARCH, Yii::createObject(['class' => SearchEvent::className(), 'query'=>$query]));
  86. return $dataProvider;
  87. }
  88. }