0
私が間違っていないと、熱心な読み込みの目的はDBクエリの数を減らすことです。Eager loading does not working
->with([
'firstEarmark' => function($q) {
$q
->select('earmarks.*')
->join('locations', 'locations.id', '=', 'earmarks.location')
->select('earmarks.*', 'locations.location AS earmarked_location')
->where('date', '>=', date('m/d/Y'))->orderBy('date', 'asc')
->get();
}
をそれが結合文の有無にかかわらず、この処理を行います。私は、クエリビルダインスタンスに以下を追加した場合でも、それは各レコードの追加のSQLクエリが返さ生成します。
私は熱心な読み込みのポイントを見逃していますか、それとも間違っていますか?
私の2番目の(わずかに関係のない)問題は、コメント付きの - > select()文を含めると何らかの理由で結果が得られないということです。
実際、Laravelはレコードごとに同じSQLクエリを生成しています。 2つのラップトップの結果がある場合、それぞれの最初のEarmarkレコードを取得する2つの同一のクエリが得られます。
113 Prepare select `earmarks`.*, `locations`.`location` as `earmarked_location` from `earmarks` inner join `locations` on `locations`.`id` = `earmarks`.`location` where `earmarks`.`laptop_id` in (?, ?) and `date` >= ? order by `date` asc
113 Execute select `earmarks`.*, `locations`.`location` as `earmarked_location` from `earmarks` inner join `locations` on `locations`.`id` = `earmarks`.`location` where `earmarks`.`laptop_id` in (1, 2) and `date` >= '11/04/2016' order by `date` asc
113 Close stmt
113 Prepare select `earmarks`.*, `locations`.`location` as `earmarked_location` from `earmarks` inner join `locations` on `locations`.`id` = `earmarks`.`location` where `earmarks`.`laptop_id` in (?, ?) and `date` >= ? order by `date` asc
113 Execute select `earmarks`.*, `locations`.`location` as `earmarked_location` from `earmarks` inner join `locations` on `locations`.`id` = `earmarks`.`location` where `earmarks`.`laptop_id` in (1, 2) and `date` >= '11/04/2016' order by `date` asc
これらのクエリは同じです!