Esempio n. 1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = User::find()->select('user.*')->joinWith('education');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => self::PAGE_SIZE], 'sort' => ['attributes' => ['username', 'email']]]);
     $this->load($params);
     if (!$this->validate()) {
         return $dataProvider;
     }
     $className = UserSearch::className();
     if (isset($params[Utils::getClassName($className)]['cities']) && $params[Utils::getClassName($className)]['cities']) {
         $cityIds = $params[Utils::getClassName($className)]['cities'];
         $query->joinWith('cities')->where(['cities.id' => $cityIds])->distinct('user.username');
     }
     if (isset($this->education_id) && $this->education_id) {
         $query->andFilterWhere(['education_id' => $this->education_id]);
     }
     $query->andFilterWhere(['id' => $this->id, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'email', $this->email]);
     return $dataProvider;
 }