У меня есть «Родительская» таблица (сервер) и «Дочерняя» таблица (Состояние сервера), статус сервера связан с таблицей сервера через его идентификатор, например, серверы id
совпадают с server_id
вмиграция состояния сервера с использованием отношения один ко многимЗатем я пытаюсь просмотреть список серверов, а затем отобразить состояние сервера, которое хранится в таблице состояния сервера.По какой-то причине я получаю необъектную ошибку при попытке перебрать сервер, который не имеет статуса.Это работает тогда, когда сервер имеет соответствующий ему статус, но не тогда, когда у меня есть только сервер и нет статуса.Кто-нибудь может дать мне некоторое представление о том, почему это может происходить?Вот текущий код для контроллера, вызывающего это представление, и цикл, используемый для итерации по данным.
index.blade.php:
@guest
@if(count($servers) > 0)
@foreach($servers as $server)
@if($server->isPublic === 1 )
@include('inc.statuses')
@endif
@endforeach
@endif
@endguest
@auth
@if(count($servers) > 0)
@foreach($servers as $server)
@include('inc.statuses')
@endforeach
@endif
@endauth
statuses.blade.php:
@if($server->serverStatus->last()->status_id === 1)
<a href="/servers/{{$server->id}}" class="text-dark list-group-item list-group-item-success">{{$server->name}}</a>
@elseif($server->serverStatus->last()->status_id === 2)
<a href="/servers/{{$server->id}}" class="text-dark list-group-item list-group-item-warning" >{{$server->name}}</a>
@elseif($server->serverStatus->last()->status_id === 3)
<a href="/servers/{{$server->id}}" class="text-dark list-group-item list-group-item-danger" >{{$server->name}}</a>
@elseif($server->serverStatus->last()->status_id === 4)
<a href="/servers/{{$server->id}}" class="text-dark list-group-item list-group-item-warning" >{{$server->name}} is under maintinance</a>
@elseif($server->serverStatus->last()->status_id === null)
<a href="/servers/{{$server->id}}" class="text-dark list-group-item list-group-item-warning" >{{$server->name}} has no inputted staus</a>
@else
<a href="/servers/{{$server->id}}" class="text-dark list-group-item list-group-item-warning" >{{$server->name}} has no inputted staus</a>
@endif
контроллер:
public function index(){
$servers = Server::orderBY('created_at', 'desc')->get();
// foreach($servers as $server){
// var_dump($server->name);
// var_dump($server->serverStatus->last()->status_id);
// var_dump($server->serverStatus->last()->server_id);
// }
$incidents = Incident::orderBY('created_at', 'desc')->paginate(10);
return view('pages.index', ['incidents' => $incidents, 'servers' => $servers]);
}