Yii:通过急切加载嵌套延迟加载

时间:2011-11-23 16:39:06

标签: php activerecord yii lazy-loading eager-loading

当然,我错过了一些或者没有考虑更好的方法来完成我需要的东西,但这就是我想要做的。

我有三个模型:ABCA的关系MANY-MANYB的关系称为relation1,而B的关系MANY-MANY的关系为C,称为relation2 1}}。我希望获得所有BC关系(急切加载)的记录,但只是来自A实例(延迟加载,因为我不想浪费内存加载所有{ {1}}个实例)。

所以,我想做的事情应该是以下几点:

relation1

当然这不起作用,因为使用A::model()->findByPk($somePrimaryKey)->relation1->with('relation2'); 延迟加载我得到一个实例数组,然后我尝试将relation1方法应用于非对象。

当然,我可以在迭代数组时做一些工作,但我想知道是否有快速和优雅的方式:)

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

A::model()->findByPk($somePrimaryKey)->with('relation1.relation2');

我无法理解你“不想浪费内存加载所有relation1实例”

这样您只需加载与特定A模型相关的B模型。不是全部。

另请查看Relational Query with through