关系和连接表属性中的Yii关系

时间:2014-06-22 15:41:42

标签: php mysql activerecord yii

我有以下型号:产品,插件,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 个答案:

答案 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);