我正在加载一个名为 Maintenance_Record 的模型,其嵌套的eager load如此:
Maintenance_Record::find('all', array('include' => array('maintenance_plan' => array('user') ) ) );
如您所见,我急于加载 Maintenance_Plan 和用户。 用户嵌套在 Maintenance_Plan 中。我想在我的视图中使用 Maintenance_Record 模型中的用户模型。我的一个观点中有一个循环:
foreach( $records as $record )
echo $record->maintenance_plan->user->first_name;
但是,当我查看SQL时,activerecord会在循环中为每个调用加载每个用户模型,从而导致N + 1次调用。
当我var_dump Maintenance_Record 模型时,正确加载 Maintenance_Plan 和用户。所以问题是如何在不引起N + 1查询的情况下访问嵌套的预先加载的模型?