Если я выполню следующее:
App\Assignment::with(['unit.records' => function ($q) {
$q->where('process_date', '>=', '2016-01-01')
->where('process_date', '<=', '2018-09-27')
->orderBy('process_date')
->orderBy('process_hour')
->limit(1);
}])
->whereIn('id', [9])
->get();
Тогда я получу следующий результат:
Illuminate\Database\Eloquent\Collection {#1104
all: [
App\Assignment {#1112
id: 9,
unit_id: 6,
start_date: "2015-11-25",
end_date: "2016-01-04",
unit: App\Unit {#986
id: 6,
records: Illuminate\Database\Eloquent\Collection {#945
all: [
App\Record {#853
id: 6624,
unit_id: 6,
process_date: "2017-09-19",
process_hour: 14,
},
],
},
},
},
],
}
Обратите внимание, что у загруженного модуля есть запись, соответствующая запросу.
Теперь, если я использую точно такой же запрос, но добавляю другое присвоение (49) в мой массив whereIn
:
App\Assignment::with(['unit.records' => function ($q) {
$q->where('process_date', '>=', '2016-01-01')
->where('process_date', '<=', '2018-09-27')
->orderBy('process_date')
->orderBy('process_hour')
->limit(1);
}])
->whereIn('id', [9,49])
->get();
Показывается запись для присвоения 49, а запись для присвоения 9 -больше не отображается:
Illuminate\Database\Eloquent\Collection {#1032
all: [
App\Assignment {#1014
id: 9,
unit_id: 6,
start_date: "2015-11-25",
end_date: "2016-01-04",
unit: App\Unit {#1283
id: 6,
records: Illuminate\Database\Eloquent\Collection {#1254
all: [],
},
},
},
App\Assignment {#1061
id: 49,
unit_id: 29,
start_date: "2017-02-24",
end_date: "9999-12-31",
unit: App\Unit {#1279
id: 29,
records: Illuminate\Database\Eloquent\Collection {#1131
all: [
App\Record {#1284
id: 6062,
unit_id: 29,
process_date: "2017-03-10",
process_hour: 13,
},
],
},
},
},
],
}
Запись, соответствующая критериям для назначения 9, очевидно, существует, но по какой-то причине она не загружается, когда запрос находит более одного назначения с единицей / записью, котораясоответствует критериям.
Я также проверил это с большим количеством назначений, и в каждом случае запись будет отображаться только для последнего назначения в массиве.
В чем здесь дело?