我有以下模型:产品,附加组件,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:现在我得到了相关的插件,但我不知道该如何获取插件类型?
问题2:如何从联接表中获取属性。喜欢ProductAddons的价格吗?
最佳答案
希望这对您有用。使用“ with()”将始终返回一个数组。同样在1:1关系上...其Yii;)。
/* @var $productsWithAddOnly ProductAddons */
$productsWithAddOnly = ProductAddons::model()->with('addons')->findAll();
if (!empty($productsWithAddOnly->addons) && 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);