Laravel 5.1 с использованием Lazy Eager Загрузка использования

Я работаю над инструментом поддержки билетов.
Дизайн стола на данный момент:

tickets: |id|supp_id|title|user_id|...

ticket_replies: |id|ticket_id|user_id|text

files: |id|ticket_replie_id|name

модель билета

public function ticket_replie()
{
return $this->hasMany('App\ticket_replie', 'ticket_id', 'id');
}

модель билета

public function file()
{
return $this->hasOne('App\File', 'ticket_replie_id', 'id');
}

контроллер

$ticket = Auth::user()->tickets()->where('id', $id)->firstOrFail();
return view('protected.ticketDetail', compact('ticket'));

Посмотреть

    ID: {{$ticket->id}}
title: {{ $ticket->title}}<br>
status: {{ returnStatus($ticket->status) }}<br>
Ticket created: {{ $ticket->created_at }}<br>@if (!$ticket->supporter)
supporter:-<br></br></br>
@else
supporter  {{ $ticket->supporter->username }}<br></br>
@endif

@foreach($ticket->ticket_replie as $reply)
@if ($reply->file == null)
reply text: {{ $reply->text }}</br>
@else
reply text: {{ $reply->text }}</br>
file: <a href="/path/to/file/{!! $reply->file->name !!}">Download file</a><br>
@endif
reply created at: {{$reply->created_at}}</br></br>
@endforeach

текущий экран запросов:
отладка запросов

Каждый ticket_replie может содержать ровно один «файл», который обозначает прикрепленный файл. Как вы можете видеть в запросах, это создает большую нагрузку. Есть ли способ использовать (Laravel Lazy Eager Загрузка) чтобы минимизировать количество запросов?

Заказ тикета по:

   $ticket = Auth::user()->tickets()->where('id', $id)->with(['ticket_replie.file'])->firstOrFail();

$ticket->sortBy('ticket_replie.created_at');

$ticket->values();

2

Решение

В контроллере что-то подобное должно делать свою работу …

$ticket = Auth::user()->tickets()->where('id', $id)->with(['ticket_replie.file'])->firstOrFail();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]