但使用此 Blade 模板代码:
<tbody>
@foreach ($orders as $order)
<tr>
<td>{{$order->id}}</td> //51 line
<td>{{$order->order->b_first_name}} {{$order->order->b_last_name}}</td>
<td>{{$order->order->r_first_name}} {{$order->order->r_last_name}}</td>
<td>£{{$order->total}}</td>
<td>{{$order->validity->diffForHumans()}}</td>
</tr>
@endforeach
</tbody>
我收到此错误:
ErrorException in fbe60fc17d23b35313269a941fc4d6f0 line 51: Trying to get property of non-object (View: /home/dgadmin/public_html/test/resources/views/admin/expired.blade.php)
这里有什么问题吗?为什么我不能使用 @foreach 循环?
最佳答案
首先,进入/storage/framework/views 文件夹并查看第 51 行,查找名为 fbe60fc17d23b35313269a941fc4d6f0 的文件。我看到你说它是 $order->id,但我不确定你是否检查了实际提供的编译 View 或 admin/expired.blade.php。编译 View 是抛出错误的 View ,因此行号将与编译 View 相对应,而不是您正在制作的 Blade 。当你查看这条线时,你会发现缺少了什么。抛出此错误是因为您尝试访问模型上的空值。如果您想走懒惰路线,请将循环更改为:
<tbody>
@foreach ($orders as $order)
<tr>
<td>{{isset($order->id)? $order->id: ''}}</td> //51 line
<td>{{isset($order->order->b_first_name)? $order->order->b_first_name : '' }} {{isset($order->order->b_last_name)? $order->order->b_last_name : ''}}</td>
<td>{{isset($order->order->r_first_name)? $order->order->r_first_name : ''}} {{isset($order->order->r_last_name)? $order->order->r_last_name : ''}}</td>
<td>£{{isset($order->total)?$order->total : ''}}</td>
<td>{{$order->validity->diffForHumans()}}</td>
</tr>
@endforeach
</tbody>
这将按预期打印循环,将任何缺失值(例如触发此错误的值)更改为空白字符串。
关于php - Laravel 5.1 无法在集合上使用 @foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47800675/