этим кодом я выполняю поиск продуктов по айди ингридиента, если ингридиент не видим то и продукт должен быть не видим.
$subQuery = (new Query())
->select('product.id as id, product.name as name, ingredient.visible, count(product_ingredient.product_id) as cnt from product')
->innerJoin(ProductIngredient::tableName(), 'product.id = product_ingredient.product_id')
->innerJoin(Ingredient::tableName(), 'ingredient.id = product_ingredient.ingredient_id')
->where(['product_ingredient.ingredient_id' => $this->ids])
->andFilterWhere(['ingredient.visible' => 1])
->groupBy('product.id, product.name, ingredient.visible')
->orderBy('cnt');
Но т.к. у продукта может быть несколько ингридиетов выражение ->andFilterWhere(['ingredient.visible' => 1]) анулируется если хоть 1 ингридиент видим. Как исправить?
ProductIngredient - промежуточная таблица