$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' => [ 'name', 'brand_name', 'category_name' ] ]); $query->joinWith(['brand', 'brand.brandNames', 'categories', 'categories.categoryNames']); // grid filtering conditions $query->andFilterWhere([ 'tax_brand_id' => $this->tax_brand_id, 'product_id' => $this->product_id, 'is_top' => (bool)$this->is_top, 'is_new' => (bool)$this->is_new, ]); $query->andFilterWhere(['ilike', 'name', $this->name]); $query->andFilterWhere(['ilike', 'brand_name.value', $this->brand_name]); $query->andFilterWhere(['ilike', 'category_name.value', $this->category_name]); return $dataProvider; } public static function findByAlias($alias) { /** @var ProductQuery $query */ $query = Product::find(); $query->byAlias($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; } }