public function searchforauthassignment($params) { $query = Authitem::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['description' => SORT_ASC]]]); $query->joinWith(['authassignments', 'authitemchildrenchild']); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['type' => $this->type, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]); // $query->where('auth_item.type = 1 and (authassignments.user_id <> :user_id or authassignments.user_id is null) and (not auth_item.name in (select b.child from auth_item_child b))', [ $query->where('auth_item.type = 1 and (authassignments.user_id <> :user_id or authassignments.user_id is null) and (not authitemchildrenchild.parent in (select a.item_name from auth_assignment a where a.user_id = :user_id) or authitemchildrenchild.parent is null)', ['user_id' => $params['id']]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'description', $this->description])->andFilterWhere(['like', 'rule_name', $this->rule_name])->andFilterWhere(['like', 'data', $this->data]); $query->groupBy(['name']); return $dataProvider; }