Laravel 5.1无法在收集时使用@foreach

时间:2017-12-13 19:21:38

标签: php laravel foreach blade laravel-blade

这是我的数据: enter image description here

但是使用此刀片模板代码:

<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>

我收到了这个错误:

  

fbe60fc17d23b35313269a941fc4d6f0第51行中的ErrorException:尝试   获取非对象的属性(查看:   /home/dgadmin/public_html/test/resources/views/admin/expired.blade.php)

这是什么问题?为什么我不能使用@foreach循环?

1 个答案:

答案 0 :(得分:3)

首先,进入/ storage / framework / views文件夹,查看名为fbe60fc17d23b35313269a941fc4d6f0的文件的第51行。我看到你说这是$ order-&gt; id,但我不确定你是否检查了实际提供的编译视图或admin / expired.blade.php。编译后的视图是抛出错误的视图,因此行号将与编译的视图对应,而不是您正在制作的刀片。当你看到这一行时,你会看到缺少的东西。抛出此错误是因为您尝试访问模型上的空值。如果你想去懒惰路线,请将你的循环改为:

<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>

这将按预期打印循环,将任何缺失值(如触发此错误的值)更改为空字符串。