我有以下模型:产品,附加组件,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);

10-08 15:24