如何将集合转换为对象,以便我可以访问关系表数据,因为我收到以下错误。 尝试获取非对象的属性(查看:E:\ xampp \ htdocs \ digi \ resources \ views \ admin \ view-all-location.blade.php)
Controller:
$locations = Location::all();
return view('admin.view-all-location')->withLocations($locations);
View::
<tbody>
@if(! count($locations) > 0)
<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>
答案 0 :(得分:2)
你应该试试这个:
<强>控制器强>
$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',compact('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>
答案 1 :(得分:0)
您的某个地理位置没有关联的company
或module
。因此,访问$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>
您也可以使用刀片or
简写:
<td>{{ $location->company->name or '' }}</td>
<td>{{ $location->module->name or '' }}</td>
如果您使用的是PHP7,则可以使用null coalesce运算符:
<td>{{ $location->company->name ?? '' }}</td>
<td>{{ $location->module->name ?? '' }}</td>
答案 2 :(得分:0)
使用get
代替all
<强>控制器强>
$locations = Location::with(['company','module'])->get();
return view('admin.view-all-location',["locations"=>$locations]);
查看强>
<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>