0

次のようにネストされた熱心なロードでMaintenance_Recordというモデルをロードしています。

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

ご覧のとおり、Maintenance_PlanUserを熱心にロードしています。ユーザーはMaintenance_Plan内にネストされています。ビューでMaintenance_RecordモデルのUserモデルを使用したいと考えています。ビューの 1 つに次のようなループがあります。

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

ただし、SQL を見ると、activerecord は呼び出しごとに各Userモデルをループ内でロードしているため、N+1 回の呼び出しが発生します。

Maintenance_Recordモデルを var_dump すると、 Maintenance_PlanUserが正しく読み込まれます。問題は、N+1 クエリを発生させずに、ネストされた熱心にロードされたモデルにアクセスするにはどうすればよいかということです。

4

1 に答える 1

0

phpactiverecord のトリプル レベルの関連付け

これはあまり注目されていないバグですが、ここで遭遇しているものであることは間違いありません。

于 2012-08-01T08:54:19.533 に答える