Yii 1.1 - 多对多关系 - 从关系表返回数据

Posted

技术标签:

【中文标题】Yii 1.1 - 多对多关系 - 从关系表返回数据【英文标题】:Yii 1.1 - Many to Many Relationship - Returning data from relation table 【发布时间】:2015-06-09 08:58:07 【问题描述】:

我的数据库中有 3 个表

tbl_products
product_id
default_price

tbl_packages
package_id
name

tbl_relations
relation_id
package_id
product_id
price

我已经在我的包/产品模型中成功建立了多对多关系

//Product->relations()
'packages' => array(self::MANY_MANY, 'Package', 'tbl_relations(package_id, product_id)')

//Package->relations()
'products' => array(self::MANY_MANY, 'Product', 'tbl_relations(product_id, package_id)')

我想要实现的是能够返回 tbl_relations.price 而不是 tbl_products.default_price,因为每条记录都可以有自定义价格。谁能指出我如何做到这一点的正确方向?

我在想也许我必须为关系创建一个模型并设置与 HAS_MANY 和 BELONGS_TO 的关系,但我不确定是否有更好的方法。谢谢。

【问题讨论】:

【参考方案1】:

最后,我得到了问题中详细说明的方法。我为关系创建了一个模型,并返回了包/产品以及关系中的数据

 //Package->relations()
'products' => array(self::HAS_MANY, 'PackageProductRelation', product_id))

//Product->relations()
'packages' => array(self::HAS_MANY, 'PackageProductRelation', package_id))

//PackageProductRelation->relations()
'products' => array(self::BELONGS_TO, 'Product', product_id))
'products' => array(self::BELONGS_TO, 'Package', package_id))

【讨论】:

以上是关于Yii 1.1 - 多对多关系 - 从关系表返回数据的主要内容,如果未能解决你的问题,请参考以下文章

hibernate关联关系(多对多)

Laravel5.1 模型 --多对多关系

Laravel 与 uuid 的多对多关系返回总是空的

返回一系列作者书籍,多对多关系

Access中的多对多关系来自单个表

Flask 学习 十一 关注着