Я хочу вызвать отношение в функции доступа с меньшим количеством запросов
тикет имеет много сообщений
Модель билета имеет функцию доступа
Я хочу в функции доступа , если ticket-> messages () -> Существовать () == TRUE возвращает тело сообщения s body, or ** if ticket->messages()->exist() == TRUE** returns ticket
этот код строки ($ ticket-> last_body) делает один запрос для каждой строки, и я хочу уменьшить свой запрос
Модель билета :
class Ticket extends Model
{
public function messages()
{
return $this->hasMany(TicketMessage::class, 'ticket_id');
}
public function getLastBodyAttribute()
{
if($this->messages()->exists()){
return $this->messages()->orderByDesc('created_at')->first()->body;
} else {
return $this->body;
}
}
}
Билетный массаж принадлежит к билетам
Модель TicketMessage :
class TicketMessage extends Model
{
public function ticket()
{
return $this->belongsTo(Ticket::class,'ticket_id');
}
}
Я получаю билеты с собственными отношениями и перехожу на просмотр
TicketController
class TicketController extends Controller
{
public function index(Request $request)
{
$tickets = Ticket::with('messages')
->where('status', 'open')
->get();
return view('ticket::supporter.supporter', compact('tickets'));
}
}
this line code $ticket->last_body make one Query for each row and i want to decrease my query
**supporter.blade** :
@foreach($tickets as $ticket)
<a href="{{url(Route('show_client_ticket', ['id' => $ticket->id]))}}">
{{$ticket->subject}}
</a>
<p style="color: #959A9D;">
{{$ticket->last_body}} //this line returns too much Query
</p>
<hr>
@endforeach