通过活动记录从多对多中间表抓取数据


Grabbing data from Many-to-Many middle table using through active record

我有完全相同的问题张贴在这里:

http://www.yiiframework.com/forum/index.php?/topic/25763-grab-data-from-many-to-many-middle-table-using-through/

through选项在多对多关系中有什么以及如何帮助我们?

'through'创建两个表之间的关系,这两个表不是由外键连接的,而是由一个中间表连接的。例如,假设我有3个模型:组、用户和评论。关系应该是这样的:

团体——(hasMany)——>用户(hasMany)——>评论。

组和注释不是由外键链接的,但是使用"槽",它们就会像外键一样被链接。这当然意味着我们可以在关系查询中享受AR的所有好处。例如,您可以简单地通过以下命令获取属于某个组的所有用户的评论:

$group->comments;

在这里你可以找到一个更详细(但可能有点技术性)的解释:http://www.yiiframework.com/doc/guide/1.1/en/database.arr

作为一个建议,我强烈建议在这里使用急切加载。解释原因有点大,但是如果您使用它,您将避免AR执行指数数量的连接查询。