Можно ли указать join в конце каждого запроса через модель?

Есть база данных, она содержит информацию о товарах. Товары имеют производителя.
Связь товара и производителя осуществляется через промежуточную таблицу.
Задача: выводить товары только определенного производителя. Осложняется всё тем, что запросов к таблице товаров много и они раскиданы по всему проекту, а некоторые из них из них уже содержат разные join'ы.

Пробовал делать свой ActiveQuery
class ProductQuery extends ActiveQuery
{
	public function init()
	{
		$this->innerJoin('product_properties', 'product.id = product_properties.product_id')
			->innerJoin('property_value',  'property_value.id = product_properties.property_value_id')
			->andWhere(['property_value.name' => 'Лунный свет (Испания)']);
		return parent::init(); // TODO: Change the autogenerated stub
	}
}

Кол-во товаров увеличивается в несколько раз, подозреваю, что join'ы накладываются.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Не рекомендую так делать. У вас наверняка не везде нужна такая связь. Если хотите оптимизировать запросы, то почитайте мой ответ на эту тему: Какие способы формирования запросов к БД в Yii2 лучше?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы