Отношение Yii в атрибутах отношения и объединения таблиц

#php #mysql #activerecord #yii

#php #mysql #activerecord #yii

Вопрос:

У меня есть следующие модели: Products, Addons, AddonTypes, ProductAddons.

Схема следующая:

 Product
id
name

Addons
id
name
type_id

AddonTypes
id
name

ProductAddons
id
product_id
addon_id
price
 

Вопрос: как я могу объединить эти таблицы по отношению к таким простым продуктам

ProductAddons::model()->with(‘addons’)->findAll() ?

Q1: Теперь я получаю соответствующий аддон, но не могу понять, как я могу получить тип аддона? Q2: Как я могу получить атрибут из таблицы соединений. Нравится цена из ProductAddons?

Комментарии:

1. Пожалуйста, опубликуйте свои PHP-модели, созданные GII.

2.Продукты ProductAddons Аддоны AddonTypes

Ответ №1:

Я надеюсь, что это сработает для вас. Использование «with()» всегда возвращает массив. Также для отношений 1: 1… его Yii ;).

 /* @var $productsWithAddOnly ProductAddons */
$productsWithAddOnly = ProductAddons::model()->with('addons')->findAll();

if (!empty($productsWithAddOnly->addons) amp;amp; is_array($productsWithAddOnly->addons)) {

    /* @var $addOn Addons */
    foreach ($productsWithAddOnly->addons as $addOn) {
       if (isset($addOn->type)) {
          var_dump($addOn->type);
       } 
    }
}
 

Кстати. вы должны сохранять имена моделей в единственном числе …

Получить все связанные модели из продуктов с помощью:

 $criteria=new CDbCriteria;
$criteria->with=array(
    'addons.addons',
);

$prdocutsWithAddOns = Product::model()->findAll($criteria);
 

Комментарии:

1. Я хочу получить продукт с отношением из дополнений таблицы с отношением из AddonsType. Так и с «двойным» отношением.

2. Хорошо, проверьте второй пример, а также проверьте эту ссылку: yiiframework.com/doc/guide/1.1/en/database.arr

3. Я думаю, вы меня не поняли, но в конце концов я получил ответ в документации Yii. Так что спасибо за помощь.