$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, ]); $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' => SORT_ASC]); return $dataProvider; } /** * @param null|Category $category * @param array $params * @param null|ActiveQuery $productQuery * * @return ActiveQuery */ public function getBrands($category = null, $params = [], $productQuery = 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.stock', 0]); $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.'); } } }