【问题标题】:Trying to get property of non-object in View in Laravel试图在 Laravel 的视图中获取非对象的属性
【发布时间】:2016-10-18 19:12:58
【问题描述】:

我是 Laravel 的新手,我认为在尝试渲染传递给视图的数据时我做错了。

这是我的路线,我在其中构建了一个简单的数组:

Route::get('/', function () {
    $data = [];

    foreach(App\User::all() as $user) {
        foreach($user->orders as $order) {
            foreach ($order->sub_orders as $sub_order) {
                $data[] = 
                    [
                        'customer_id' => $user->id, 
                        'customer_name' => $user->name, 
                        'city' => $user->city, 
                        'order_id' => $order->id, 
                        'order_date' => $order->created_at->format('Y-m-d H:i:s'),
                        'sub_order_id' => $sub_order->id,
                        'item_name' => $sub_order->item->name,
                        'quantity' => $sub_order->quantity,
                        'unit_price' => $sub_order->item->unit_price,
                        'total_price' => $sub_order->item->unit_price * $sub_order->quantity,
                        'delivery_date' => $sub_order->delivery_date,
                        'delivery_status' => $sub_order->delivery_status
                    ];
            }
        }
    }

    return view('welcome', ["data" => $data]);
});

这就是我在视图方面的尝试:

@foreach ($data as $row)
  <tr>
    <td> {{ $row->customer_id }} </td>
  </tr>
@endforeach

这给了我&lt;td&gt; {{ $row-&gt;customer_id }} &lt;/td&gt; 行上的错误Trying to get property of non-object。我不明白我做错了什么。 :|

另外,有什么办法可以ddvar_dump视图中接收到的数据?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    $row 是数组而不是对象。您可以通过

    访问它
    $row['customer_id'];
    

    PS:是的,您可以在视图中使用print_r($data); 来查看它,也可以使用var_dumpdd

    【讨论】:

    • 或者dump($data)也可以。
    • 我想我们需要为这些函数使用 PHP 标签,对吧?
    • 你可以把这些函数放在{{ }}里面,它也可以工作:)
    【解决方案2】:

    $row-&gt;customer_id 替换为$row['customer_id'] 以访问array 值;

    【讨论】:

      【解决方案3】:

      $row 是一个关联数组。你可以这样做:

      @foreach ($data as $row)
        <tr>
            <td> {{ $row['customer_id'] }} </td>
        </tr>
      @endforeach
      

      【讨论】:

        【解决方案4】:

        $row 不是一个对象,它是一个关联数组。像这样访问它

        $row['customer_id'];
        

        你可以使用dd查看数据:)

        【讨论】:

          猜你喜欢
          • 2015-09-22
          • 2017-03-20
          • 2014-03-25
          • 2015-01-25
          • 2014-06-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多