$query, ]); $this->load($params); if (!empty($params['product_id'])) { $this->product_id = $params['product_id']; } 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' => [ 'name' => [ 'asc' => ['product_variant.name' => SORT_ASC], 'desc' => ['product_variant.value' => SORT_DESC], 'default' => SORT_DESC, 'label' => 'Variant name', ], 'brand_name' => [ 'asc' => ['brand_name.value' => SORT_ASC], 'desc' => ['brand_name.value' => SORT_DESC], 'default' => SORT_DESC, 'label' => 'Brand name', ], 'category_name', 'sku', ] ]); $query->joinWith(['product', 'product.brand', 'product.categories']); if (isset($this->is_top)) { $query->andFilterWhere([ 'product.is_top' => (bool)$this->is_top, ]); } if (isset($this->is_new)) { $query->andFilterWhere([ 'product.is_new' => (bool)$this->is_new, ]); } if (isset($this->akciya)) { $query->andFilterWhere([ 'product.akciya' => (bool)$this->akciya, ]); } // grid filtering conditions $query->andFilterWhere([ 'product_variant.product_id' => $this->product_id, 'product_variant_id' => $this->product_variant_id, ]); if (!empty($this->fullname)) { $query->orFilterWhere(['like', 'product_variant.name', $this->fullname]); $query->orFilterWhere(['ilike', 'product.name', $this->fullname]); } $query->andFilterWhere(['ilike', 'product.brand_name.value', $this->brand_name]); $query->andFilterWhere(['ilike', 'product.category_name.value', $this->category_name]); $query->andFilterWhere(['ilike', 'sku', $this->sku]); $query->groupBy(['product_variant_id']); $query->orderBy('product_variant.product_id', 'ASC'); return $dataProvider; } public static function findBySku($sku) { /** @var ProductQuery $query */ $query = ProductVariant::find() ->andFilterWhere(['sku' => $sku]); if (($model = $query->one()) !== null) { return $model; } return; } public static function findByRemoteID($id) { /** @var CategoryQuery $query */ $query = ProductVariant::find() ->andFilterWhere(['remote_id' => $id]); if (($model = $query->one()) !== null) { return $model; } return; } }