Yii:嵌套懒惰加载与渴望加载
问题描述:
当然,我错过了一些东西或没有考虑更好的方式来完成我所需要的,但这里是我想要做的。Yii:嵌套懒惰加载与渴望加载
我有三种型号:A
,B
和C
。 A
与MANY-MANY
的关系为B
,称为relation1
,而B
与MANY-MANY
的关系为C
,称为relation2
。我想得到所有B
记录与他们的C
关系(急切加载),但仅仅从一个A
实例(延迟加载,因为我不想浪费内存加载所有relation1
实例)。
所以,我想要做的应该是这样的:
A::model()->findByPk($somePrimaryKey)->relation1->with('relation2');
当然是因为使用relation1
延迟加载我得到实例的数组,这不是工作,那么我tryng到将with()
方法应用于非对象。
当然,我可以做的工作有点绕通过数组迭代,但我想知道是否有一个快速和高贵的方式:)
谢谢!
答
你可以试试这个:
A::model()->findByPk($somePrimaryKey)->with('relation1.relation2');
我找不到在任何意义上的你“不想浪费内存加载所有relation1实例”
这样,你只是加载B型与那个特定的A模型有关。不是所有的人。
好的,谢谢@Asgaroth。我认为用这种方式嵌套两个'with',我首先加载关系1的所有记录。 –