当然,我错过了一些或者没有考虑更好的方法来完成我需要的东西,但这就是我想要做的。
我有三个模型:A
,B
和C
。 A
的关系MANY-MANY
与B
的关系称为relation1
,而B
的关系MANY-MANY
的关系为C
,称为relation2
1}}。我希望获得所有B
个C
关系(急切加载)的记录,但只是来自A
实例(延迟加载,因为我不想浪费内存加载所有{ {1}}个实例)。
所以,我想做的事情应该是以下几点:
relation1
当然这不起作用,因为使用A::model()->findByPk($somePrimaryKey)->relation1->with('relation2');
延迟加载我得到一个实例数组,然后我尝试将relation1
方法应用于非对象。
当然,我可以在迭代数组时做一些工作,但我想知道是否有快速和优雅的方式:)
谢谢!
答案 0 :(得分:2)
你可以试试这个:
A::model()->findByPk($somePrimaryKey)->with('relation1.relation2');
我无法理解你“不想浪费内存加载所有relation1实例”
这样您只需加载与特定A模型相关的B模型。不是全部。