/** * @param array $params * @return ActiveDataProvider */ public function search($params) { $query = Company::find()->from(['c' => self::tableName()])->joinWith(['user', 'ownership']); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['attributes' => ['id', 'name', 'userName' => ['asc' => ['u.first_name' => SORT_ASC, 'u.last_name' => SORT_ASC], 'desc' => ['u.first_name' => SORT_DESC, 'u.last_name' => SORT_DESC]], 'ownershipName' => ['asc' => ['ot.name' => SORT_ASC], 'desc' => ['ot.name' => SORT_DESC]], 'edrpou']]]); $this->load($params); if (!$this->validate()) { return $dataProvider; } $query->andFilterWhere(['c.id' => $this->id, 'c.edrpou' => $this->edrpou]); $query->andFilterWhere(['like', 'c.name', $this->name])->andFilterWhere(['like', 'u.first_name', $this->userName])->orFilterWhere(['like', 'u.last_name', $this->userName])->andFilterWhere(['like', 'ot.name', $this->ownershipName]); return $dataProvider; }