#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.
Ответ №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. Так что спасибо за помощь.