我有以下型号:产品,插件,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的价格吗?
答案 0 :(得分:1)
我希望这对你有用。使用" 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);