0

我正在加载一个名为Maintenance_Record的模型,其中包含一个嵌套的急切加载,如下所示:

Maintenance_Record::find('all', array('include' => array('maintenance_plan' => array('user') ) ) );

如您所见,我渴望加载Maintenance_PlanUser用户嵌套在Maintenance_Plan中。我想在我的视图中使用Maintenance_Record模型中的User模型。我的观点之一是这样的:

foreach( $records as $record )
    echo $record->maintenance_plan->user->first_name;

但是,当我查看 SQL 时,activerecord 会在循环中每次调用加载每个用户模型,从而导致 N+1 调用。

当我 var_dump Maintenance_Record模型时,Maintenance_PlanUser被正确加载。所以问题是如何在不引起 N+1 查询的情况下访问嵌套的预加载模型?

4

1 回答 1

0

phpactiverecord 中的三级关联

这是一个没有引起太多关注的错误,但我相当肯定这就是您在这里遇到的问题。

于 2012-08-01T08:54:19.533 回答