@palansky

Как сделать такую выборку по связям?

Приветствую! Казалось бы простая вещь, но не могу получить результат.

Есть модели:
User - hasMany - Room
Room - hasMany - Order

Как получить все связи Room, с одной последней записью Order?

Пробовал делать так:
$user->rooms()
    ->with([ 'orders' => function ($query) {
         $query->with('user')->latest()->first();
         }
    ])
->get();


Пробовал также вместо first() ->take(1)->get()

Но получаю только одну запись только у первой связи, а остальные пустые:
[
            0 => [
                'orders' => ['name order']
            ],
            1 => [
                'orders' => []
            ],
            2 => [
                'orders' => []
            ],
        ]


Как получить у связи только одну запись?
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
pxz
@pxz
✔ Совет: Вам помогли? Отметьте ответы решением.
Проще реализовать в модели Room релейшн lastOrder.
public function lastOrder(): HasOne
{
    return $this->hasOne(Order::class, '...')->latest();
}


И в выборке просто использовать
->with('lastOrder')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы