---
title: 'Laravel: загружаем последнюю дочернюю модель для каждого родителя'
url: 'https://graker.ru/news/2016/02/08/laravel_zagruzhaem_poslednyuyu_dochernyuyu_model_dlya_kazhdog'
language: ru
type: post
author: 'Роман Грачев'
published: '2016-02-08T18:09:08+03:00'
updated: '2016-03-31T23:30:21+03:00'
categories:
  - Laravel
  - Программирование
---

# Laravel: загружаем последнюю дочернюю модель для каждого родителя

Допустим, у нас есть модель Фотоальбом, и мы для списка альбомов хотим загрузить (eager load) превью каждого в виде последней фотографии. Казалось бы, это можно сделать так:

```php
  $albums = Album::with(['photos' => function ($query) {
    $query->take(1);
  }])->get();
```

Однако такой запрос прикрепит одну фотографию лишь к одному альбому, а к остальным — нет. Тот же эффект будет, если вместо

```php
take(1)
```

использовать

```php
latest()
```

.
Чтобы добиться желаемого результата, нужно в модели альбома объявить еще одно отношение:

```php
  public function latestPhoto() {
    return $this->hasOne('Photo')->latest();
  }
```

Тогда вот такой запрос:

```php
  $albums = Album::with('latestPhoto')->get();
```

позволит нам получить то, что нужно.
