在不导致N+;1 php activerecord中的查询

在不导致N+;1 php activerecord中的查询,php,codeigniter,phpactiverecord,Php,Codeigniter,Phpactiverecord,我正在加载一个名为维护\u记录的模型,其中包含一个嵌套的即时加载,如下所示: Maintenance_Record::find('all', array('include' => array('maintenance_plan' => array('user') ) ) ); 如您所见,我渴望加载维护计划和用户用户嵌套在维护计划中。我想使用我视图中维护记录模型中的用户模型。我的一个视图中有一个循环,如下所示: foreach( $records as $record ) e

我正在加载一个名为维护\u记录的模型,其中包含一个嵌套的即时加载,如下所示:

Maintenance_Record::find('all', array('include' => array('maintenance_plan' => array('user') ) ) );
如您所见,我渴望加载维护计划用户用户嵌套在维护计划中。我想使用我视图中维护记录模型中的用户模型。我的一个视图中有一个循环,如下所示:

foreach( $records as $record )
    echo $record->maintenance_plan->user->first_name;
但是,当我查看SQL时,activerecord在循环中每次调用都加载每个用户模型,从而导致N+1次调用

当I var_转储维护记录模型时,正确加载了维护计划用户。因此,问题是如何在不引起N+1查询的情况下访问嵌套的已加载模型?


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

在您的模型中,关系是什么样子的?您可以调用数组('user','through'=>'maintanace_plan')。或者你可以试着像$record->maintenance\u plan->user[0]->first\u name那样调用它;