Мой дизайн стола:
пользователи: | id | username | …
билеты: | id | supp_id | …
ticket_replies: | id | ticket_id | user_id
Мои контроллеры выглядят так:
пользователь:
public function tickets()
{
return $this->hasMany('App\ticket');
}
билет:
public function ticket_replie()
{
return $this->hasMany('App\ticket_replie');
}
public function supp_id()
{
return $this->hasOne('App\User', 'id','supp_id');
}
Мой контроллер выглядит так:
$tickets = Auth::user()->tickets()->orderBy('status', 'desc')->paginate(2);
return view('protected.ticketsList', [
'tickets' => $tickets,
]);
На мой взгляд, я использую:
@foreach ($tickets as $ticket)
<br>
<br>
ID: {{$ticket->id}}
title: {{ $ticket->title}}<br>
status: {{ returnStatus($ticket->status) }}<br>
@if($ticket->supporter = null)
supporter: -<br>
@else
supporter: {{ $ticket->supp_id()->username }}
@endif
created: {{ $ticket->created_at }}<br>
@endforeach
Есть идеи, где я делаю неправильно? Я все время получаю эту ошибку:
Попытка получить свойство необъекта (представление: C: \ xampp \ htdocs \ projekt \ resources \ views \ protected \ ticketsList.blade.php)
На мой взгляд, связь между самими таблицами выполнена правильно.
Проблема в следующей строке:
supporter: {{ $ticket->supp_id->username }}
Вы пытаетесь получить собственность username
из атрибута (не объект) supp_id
попробуйте использовать скобки ()
ссылаться на метод supp_id()
а не атрибут supp_id
:
supporter: {{ $ticket->supp_id()->username }}
Замечания : Вы должны поставить foreach
петля внутри @else
пункт.
Надеюсь это поможет.
Для начала я думаю, что ваше мнение должно быть таким, поэтому вы можете просматривать только билеты, если они есть.
@if(!$tickets->count() > 0)
no tickets created
@else
@foreach ($tickets as $ticket)
{{dd($ticket->ticket_replie)}}
title: {{ $ticket->title}}<br>
status: {{ returnStatus($ticket->status) }}<br>
supporter: {{ $ticket->supp_id->username }}
created: {{ $ticket->created_at }}<br>
@endforeach
@endif