Php 当父对象在一对多关系中没有子对象时,我在检查它时会得到一个非对象错误
我有一个“父”表(服务器)和一个“子”表(服务器状态)。服务器状态通过其id连接到服务器表,例如,服务器Php 当父对象在一对多关系中没有子对象时,我在检查它时会得到一个非对象错误,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我有一个“父”表(服务器)和一个“子”表(服务器状态)。服务器状态通过其id连接到服务器表,例如,服务器id与服务器状态迁移中使用一对多关系的server\u id相同。然后,我尝试遍历我的服务器列表,然后显示服务器的状态,该状态存储在服务器状态表中。由于某些原因,我在尝试遍历一个没有状态的服务器时遇到了问题。如果服务器的状态与之相对应,那么这就起作用了,但当我只有一个服务器而没有状态时,情况就不一样了。有谁能告诉我为什么会发生这种情况?下面是调用此视图的控制器的当前代码,以及用于遍历数据的循环
id
与服务器状态迁移中使用一对多关系的server\u 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
@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
statuses.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
@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
使用
$servers=Server::has('serverStatus')->orderBY('created_at','desc')->get()
仅获取状态为的服务器。!空($server->serverStatus)在刀片文件中也添加此条件use$servers=server::has('serverStatus')->orderBY('created_at','desc')->get()
只获取状态为的服务器。@TheFallen工作得很好,如果你把它添加到我会尽快接受的答案中,我对laravel是相当陌生的,忘了我可以像那样链接命令。