Допустим, у нас есть модель Фотоальбом, и мы для списка альбомов хотим загрузить (eager load) превью каждого в виде последней фотографии. Казалось бы, это можно сделать так:
$albums = Album::with(['photos' => function ($query) {
$query->take(1);
}])->get();
Однако такой запрос прикрепит одну фотографию лишь к одному альбому, а к остальным — нет. Тот же эффект будет, если вместо
take(1)
использовать
latest()
.
Чтобы добиться желаемого результата, нужно в модели альбома объявить еще одно отношение:
public function latestPhoto() {
return $this->hasOne('Photo')->latest();
}
Тогда вот такой запрос:
$albums = Album::with('latestPhoto')->get();
позволит нам получить то, что нужно.