Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当父对象在一对多关系中没有子对象时,我在检查它时会得到一个非对象错误_Php_Mysql_Laravel_Laravel 5 - Fatal编程技术网

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

Php 当父对象在一对多关系中没有子对象时,我在检查它时会得到一个非对象错误,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我有一个“父”表(服务器)和一个“子”表(服务器状态)。服务器状态通过其id连接到服务器表,例如,服务器id与服务器状态迁移中使用一对多关系的server\u id相同。然后,我尝试遍历我的服务器列表,然后显示服务器的状态,该状态存储在服务器状态表中。由于某些原因,我在尝试遍历一个没有状态的服务器时遇到了问题。如果服务器的状态与之相对应,那么这就起作用了,但当我只有一个服务器而没有状态时,情况就不一样了。有谁能告诉我为什么会发生这种情况?下面是调用此视图的控制器的当前代码,以及用于遍历数据的循环

我有一个“父”表(服务器)和一个“子”表(服务器状态)。服务器状态通过其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是相当陌生的,忘了我可以像那样链接命令。