当父母在一对多关系中没有孩子时,我在检查它时收到一个非对象错误



我有一个"父"表(服务器(和一个"子"表(服务器状态(,服务器状态通过其ID连接到服务器表,例如服务器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]);
}

使用$servers = Server::has('serverStatus')->orderBY('created_at', 'desc')->get();仅获取具有状态的服务器。

相关内容

最新更新