我正在加载一个名为Maintenance_Record的模型,其中包含一个嵌套的急切加载,如下所示:
Maintenance_Record::find('all', array('include' => array('maintenance_plan' => array('user') ) ) );
如您所见,我渴望加载Maintenance_Plan和User。用户嵌套在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_Plan和User被正确加载。所以问题是如何在不引起 N+1 查询的情况下访问嵌套的预加载模型?