Связанные продукты

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Darth_Ixis
Сообщения: 105
Зарегистрирован: 2010.08.23, 10:03
Откуда: KZ, Almaty

Связанные продукты

Сообщение Darth_Ixis »

Изображение

Код: Выделить всё

SELECT DISTINCT bp.*
FROM bff_product AS bp
LEFT JOIN bff_relate_product AS brp ON brp.product_id_1 = bp.product_id
LEFT JOIN bff_relate_product AS brp2 ON brp2.product_id_2 = bp.product_id
WHERE brp.product_id_2 = 133 OR brp2.product_id_1 = 133]
Этот код вытаскивает все товары, которые связаны с товаром №133. Как такое же сделать через relations() ?
В общем, нужно вытаскивать связанные товары, по картинке и запросу надеюсь понятно какая схема испрозуется.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Связанные продукты

Сообщение slavcodev »

обычная MANY_MANY связь
Жду Yii 3!
Аватара пользователя
Darth_Ixis
Сообщения: 105
Зарегистрирован: 2010.08.23, 10:03
Откуда: KZ, Almaty

Re: Связанные продукты

Сообщение Darth_Ixis »

обычная MANY_MANY связь
Можно воочию увидеть?

Код: Выделить всё

  'related_products' => array(self::MANY_MANY, 'Product', RelateProduct::model()->tableName().'(product_id_1, product_id_2)') 
Вот обычная MANY_MANY и у меня ничего не возвращается.
Аватара пользователя
Darth_Ixis
Сообщения: 105
Зарегистрирован: 2010.08.23, 10:03
Откуда: KZ, Almaty

Re: Связанные продукты

Сообщение Darth_Ixis »

Как вариант, но мне он не нравится, т.к. придётся совершать лишние телодвижения.

Код: Выделить всё

'related_products_1' => array(self::MANY_MANY, 'Product', RelateProduct::model()->tableName().'(product_id_1, product_id_2)'),
'related_products_2' => array(self::MANY_MANY, 'Product', RelateProduct::model()->tableName().'(product_id_2, product_id_1)')
 
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: Связанные продукты

Сообщение Johnatan »

Darth_Ixis писал(а):Как вариант, но мне он не нравится, т.к. придётся совершать лишние телодвижения.

Код: Выделить всё

'related_products_1' => array(self::MANY_MANY, 'Product', RelateProduct::model()->tableName().'(product_id_1, product_id_2)'),
'related_products_2' => array(self::MANY_MANY, 'Product', RelateProduct::model()->tableName().'(product_id_2, product_id_1)')
 
Никаких лишних телодвижений. У вас двойная связь, вот и два "отношения". Добавьте together, если всегда хотите получать инфу по рилейтедам, или используйте with в запросах.
Конференция: yii@conference.jabber.ru
Аватара пользователя
Darth_Ixis
Сообщения: 105
Зарегистрирован: 2010.08.23, 10:03
Откуда: KZ, Almaty

Re: Связанные продукты

Сообщение Darth_Ixis »

Т.е. похожего запроса, который в первом посте, через одно отношение никак не добиться?
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: Связанные продукты

Сообщение Johnatan »

Через одно отношение - нет. Одним запросом - да.
Конференция: yii@conference.jabber.ru
Ответить