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' => [ // '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', '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 findByRemoteID($id) { /** @var CategoryQuery $query */ $query = Product::find() ->andFilterWhere(['remote_id' => $id]); if (($model = $query->one()) !== null) { return $model; } return null; } }