【问题标题】:Yii: nesting lazy loading with eager loadingYii:嵌套延迟加载和急切加载
【发布时间】:2011-11-23 16:39:05
【问题描述】:

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

我有三个模型:ABCAB 有一个关系 MANY-MANY,称为 relation1BMANY-MANY 有一个关系 C,称为 relation2。我想获取所有B 记录及其C 关系(急切加载),但只是来自A 实例(延迟加载,因为我不想浪费内存加载所有relation1 实例)。

所以,我想做的应该是这样的:

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

当然这不起作用,因为使用 relation1 延迟加载我得到了一个实例数组,然后我尝试将 with() 方法应用于非对象。

当然,我可以围绕遍历数组做一些工作,但我想知道是否有一种快速而优雅的方法 :)

谢谢!

【问题讨论】:

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


    【解决方案1】:

    你可以试试这个:

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

    我找不到任何意义,因为您“不想浪费内存加载所有关系 1 实例”

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

    也可以看看Relational Query with through

    【讨论】:

    • 好的,谢谢@Asgaroth。我认为嵌套两个with 这样我首先加载了关系1 的所有记录。
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多