joinWith(['brand', 'categories', 'variant']); $query->groupBy(['product.product_id']); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); if ( !($this->load($params) && $this->validate()) ) { return $dataProvider; } $dataProvider->setSort([ 'attributes' => [ 'name', 'brand_name' => [ 'asc' => ['brand.name' => SORT_ASC], 'desc' => ['brand.name' => SORT_DESC], 'default' => SORT_DESC, 'label' => 'Brand name', ], 'category_name', 'variant_sku', ] ]); if (isset($this->is_top)) { $query->andFilterWhere([ 'is_top' => (bool)$this->is_top, ]); } if (isset($this->is_new)) { $query->andFilterWhere([ 'is_new' => (bool)$this->is_new, ]); } if (isset($this->akciya)) { $query->andFilterWhere([ 'akciya' => (bool)$this->akciya, ]); } $query->andFilterWhere([ 'product.brand_id' => $this->brand_id, 'product.product_id' => $this->product_id, 'product_category.category_id' => $this->category_id ]); $query->andFilterWhere(['ilike', 'product.name', $this->name]); $query->andFilterWhere(['ilike', 'brand.name', $this->brand_name]); $query->andFilterWhere(['ilike', 'category.name', $this->category_name]); $query->andFilterWhere(['ilike', 'product_variant.sku', $this->variant_sku]); return $dataProvider; } public static function findByAlias($alias) { $query = Product::find()->where(["alias"=>$alias]); if (($model = $query->one()) !== null) { return $model; } else { throw new NotFoundHttpException('The requested product does not exist.'); } } public static function findByRemoteID($id) { /** @var CategoryQuery $query */ $query = Product::find() ->andFilterWhere(['remote_id' => $id]); if (($model = $query->one()) !== null) { return $model; } return null; } }