对象的laravel集合

对象的laravel集合,laravel,eloquent,Laravel,Eloquent,如何将集合转换为对象,以便访问关系表数据,因为我遇到以下错误。 尝试获取非对象的属性(视图:E:\xampp\htdocs\digi\resources\views\admin\View all location.blade.php) 控制器: $locations=Location::all(); 返回视图('admin.view all location')->带位置($locations); 视图:: @如果(!计数($locations)>0) 没有添加位置 @恩迪夫 @foreach(

如何将集合转换为对象,以便访问关系表数据,因为我遇到以下错误。 尝试获取非对象的属性(视图:E:\xampp\htdocs\digi\resources\views\admin\View all location.blade.php)

控制器:
$locations=Location::all();
返回视图('admin.view all location')->带位置($locations);
视图::
@如果(!计数($locations)>0)
没有添加位置
@恩迪夫
@foreach($locations作为$location)
{{$location->name}
{{$location->company->name}
{{$location->module->name}
{{$location->address}
{{$location->created_at->format('d.m.Y')}
@endforeach
您应该尝试以下方法:

控制器

$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',compact('locations'));
$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',["locations"=>$locations]);
查看

<tbody>
    @if(isset($locations) && count($locations) > 0)
       @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company->name }}</td>
            <td>{{$location->module->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
      @endforeach

   @else
      <th>No Location Added</th>

   @endif

</tbody>
 <tbody>
    @if($locations->isEmpty())
          <th>No Location Added</th>
   @endif
     @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company()->name }}</td>
            <td>{{$location->module()->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
    @endforeach
</tbody>

@if(设置($locations)和计数($locations)>0)
@foreach($locations作为$location)
{{$location->name}
{{$location->company->name}
{{$location->module->name}
{{$location->address}
{{$location->created_at->format('d.m.Y')}
@endforeach
@否则
没有添加位置
@恩迪夫
您应该尝试以下方法:

控制器

$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',compact('locations'));
$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',["locations"=>$locations]);
查看

<tbody>
    @if(isset($locations) && count($locations) > 0)
       @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company->name }}</td>
            <td>{{$location->module->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
      @endforeach

   @else
      <th>No Location Added</th>

   @endif

</tbody>
 <tbody>
    @if($locations->isEmpty())
          <th>No Location Added</th>
   @endif
     @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company()->name }}</td>
            <td>{{$location->module()->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
    @endforeach
</tbody>

@if(设置($locations)和计数($locations)>0)
@foreach($locations作为$location)
{{$location->name}
{{$location->company->name}
{{$location->module->name}
{{$location->address}
{{$location->created_at->format('d.m.Y')}
@endforeach
@否则
没有添加位置
@恩迪夫

您的一个位置没有关联的
公司
模块
。因此,访问
$location->company->name
$location->module->name
将抛出错误,因为您试图访问
->name
的值为
null

处理此问题的一些常见方法:

isset
与三元运算符组合:

<td>{{ isset($location->company) ? $location->company->name : '' }}</td>
<td>{{ isset($location->module) ? $location->module->name : '' }}</td>
<td>{{ $location->company->name ?? '' }}</td>
<td>{{ $location->module->name ?? '' }}</td>
如果您使用的是PHP7,则可以使用空合并运算符:

<td>{{ isset($location->company) ? $location->company->name : '' }}</td>
<td>{{ isset($location->module) ? $location->module->name : '' }}</td>
<td>{{ $location->company->name ?? '' }}</td>
<td>{{ $location->module->name ?? '' }}</td>
{{$location->company->name???'}
{{$location->module->name???'}

您的一个位置没有关联的
公司
模块
。因此,访问
$location->company->name
$location->module->name
将抛出错误,因为您试图访问
->name
的值为
null

处理此问题的一些常见方法:

isset
与三元运算符组合:

<td>{{ isset($location->company) ? $location->company->name : '' }}</td>
<td>{{ isset($location->module) ? $location->module->name : '' }}</td>
<td>{{ $location->company->name ?? '' }}</td>
<td>{{ $location->module->name ?? '' }}</td>
如果您使用的是PHP7,则可以使用空合并运算符:

<td>{{ isset($location->company) ? $location->company->name : '' }}</td>
<td>{{ isset($location->module) ? $location->module->name : '' }}</td>
<td>{{ $location->company->name ?? '' }}</td>
<td>{{ $location->module->name ?? '' }}</td>
{{$location->company->name???'}
{{$location->module->name???'}

使用
get
而不是
all

控制器

$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',compact('locations'));
$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',["locations"=>$locations]);
查看

<tbody>
    @if(isset($locations) && count($locations) > 0)
       @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company->name }}</td>
            <td>{{$location->module->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
      @endforeach

   @else
      <th>No Location Added</th>

   @endif

</tbody>
 <tbody>
    @if($locations->isEmpty())
          <th>No Location Added</th>
   @endif
     @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company()->name }}</td>
            <td>{{$location->module()->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
    @endforeach
</tbody>

@如果($locations->isEmpty())
没有添加位置
@恩迪夫
@foreach($locations作为$location)
{{$location->name}
{{$location->company()->name}
{{$location->module()->name}
{{$location->address}
{{$location->created_at->format('d.m.Y')}
@endforeach

使用
get
而不是
all

控制器

$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',compact('locations'));
$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',["locations"=>$locations]);
查看

<tbody>
    @if(isset($locations) && count($locations) > 0)
       @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company->name }}</td>
            <td>{{$location->module->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
      @endforeach

   @else
      <th>No Location Added</th>

   @endif

</tbody>
 <tbody>
    @if($locations->isEmpty())
          <th>No Location Added</th>
   @endif
     @foreach($locations as $location)
        <tr class="odd gradeX">
           <td>{{$location->name}}</td>
            <td>{{ $location->company()->name }}</td>
            <td>{{$location->module()->name}}</td>
            <td>{{$location->address}}</td>
            <td>{{$location->created_at->format('d.m.Y')}}</td>

         </tr>
    @endforeach
</tbody>

@如果($locations->isEmpty())
没有添加位置
@恩迪夫
@foreach($locations作为$location)
{{$location->name}
{{$location->company()->name}
{{$location->module()->name}
{{$location->address}
{{$location->created_at->format('d.m.Y')}
@endforeach

在哪一行出现此错误?添加完整的错误尝试
@if
@else
然后
@endif
在ur
@else
中添加
@foreach
可能$locations不返回任何内容。您是否有$locations中的数据返回控制器中的$locations,并显示您在哪一行获得此结果错误?添加完整的错误尝试
@if
@else
然后
@endif
在ur
@else
中添加
@foreach
可能$locations不返回任何内容。您是否在$locations中有数据返回控制器中的$locations并显示输出如果该位置没有关联的公司或模块,则没有帮助
$location->company
仍将是
null
,在
null
上调用
->name
将抛出错误。如果该位置没有关联的公司或模块,这将不会有帮助
$location->company
仍将是
null
,在
null
上调用
->name
将抛出错误。