with('brandName') // add conditions that should always apply here $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); $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; }*/ $dataProvider->setSort([ 'attributes' => [ 'brand_name', 'alias' ] ]); // grid filtering conditions $query->andFilterWhere([ 'brand_id' => $this->brand_id, 'brand_name_id' => $this->brand_name_id, ]); $query->andFilterWhere(['ilike', 'alias', $this->alias]) ->andFilterWhere(['ilike', 'image', $this->image]) ->andFilterWhere(['ilike', 'meta_title', $this->meta_title]) ->andFilterWhere(['ilike', 'meta_desc', $this->meta_desc]) ->andFilterWhere(['ilike', 'meta_robots', $this->meta_robots]) ->andFilterWhere(['ilike', 'seo_text', $this->seo_text]); if (!empty($this->brand_name)) { $query->andFilterWhere(['ilike', 'name', $this->brand_name]); } $query->orderBy('brand_id', 'asc'); return $dataProvider; } public function getBrands($category = null) { $query = Brand::find() ->select([ Brand::tableName() .'.*' ]) ->innerJoin(Product::tableName(), Product::tableName() .'.brand_id='. Brand::tableName() .'.brand_id') ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. Product::tableName() .'.product_id'); $query->innerJoin('product_variant', 'product_variant.product_id = '. Product::tableName() .'.product_id'); $query->where(['!=', 'product_variant.status', 1]); // $query->groupBy(Product::tableName() .'.product_id'); if (!empty($category)) { $query->andWhere([ ProductCategory::tableName() .'.category_id' => $category->category_id ]); } // $query->groupBy(Brand::tableName() .'.brand_id'); return $query; } public static function findByAlias($alias) { /** @var CategoryQuery $query */ $query = Brand::find() ->andFilterWhere(['alias' => $alias]); if (($model = $query->one()) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }