【问题标题】:Yii relation in relation and join table attributes关系和连接表属性中的 Yii 关系
【发布时间】:2014-06-22 15:41:41
【问题描述】:

我有以下模型: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 的价格吗?

【问题讨论】:

标签: php mysql activerecord yii


【解决方案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);

【讨论】:

  • 我想从 AddonsType 表中获取具有关系的产品。所以有一个“双重”关系。
  • 好的,检查第二个例子并检查这个链接:yiiframework.com/doc/guide/1.1/en/database.arr
  • 我想你没看懂我,但最后我在 Yii 文档中得到了答案。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多