Laravel throws an error once I have more than 15 rows in my order table ```local.ERROR: Undefined array key 0```
Laravel throws an error once I have more than 15 rows in my order table ```local.ERROR: Undefined array key 0```
我真的不知道怎么说。我有两个 tables Order.php
和 Product.php
,return $this->hasMany(Product::class, 'id');
在 Order.php
和 return $this->belongsTo(Order::class, 'product_id');
在 Product.php
.
在我的OrderController
public function index()
{
$orders = Order::latest()->paginate(10);
return view('admin.order.order')->with([
'orders' => $orders,
]);
}
在我看来
@foreach($orders as $order)
<tr data-href="{{ route('orders.view', $order->id) }}">
<td></td>
<td>{{ $order->products[0]->product_name }}</td>
<td>{{ $order->order_quantity }}</td>
<td>{{ $order->customer_name }}</td>
<td>{{ $order->customer_tel_no }}</td>
<td width="300">{{ $order->customer_address }} Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>
<td>{{ $order->total_amount }}</td>
<td>
<span class="badge text-white badge-lg bg-{{ $order->is_delivered == false ? 'warning' : 'success' }}">
{{ $order->is_delivered == false ? 'Not yet delivered!' : 'Delivered!' }}
</span>
</td>
<td>{{ $order->created_at->diffForHumans() }}</td>
</tr>
@endforeach
一切正常,直到我在订单中有超过 15 条记录时 table 我收到错误消息 Undefined array key 0
请问我也是新手 Laravel 谢谢
我认为这是因为这条线:
<td>{{ $order->products[0]->product_name }}</td>
您确定每个订单都有一个产品吗?
这个错误是因为 $order 没有任何产品,因此没有数组键 0
您可以在链接时使用 php 的新可选语法,即 ?->
https://stitcher.io/blog/php-8-nullsafe-operator
$order->products?->first()->product_name
如果此特定 $order 上没有任何产品(假设您使用的是 php 8!)
,则应该 return 为 null
如果您使用的是旧版本 php,您应该考虑
@if(count($order->products))
<td>{{ $order->products[0]->product_name }}</td>
@endif
另一种方法是,使用 laravel 的 optional()
助手,如下所示
<td>{{ optional($order->products)->first()->product_name }} </td>
我真的不知道怎么说。我有两个 tables Order.php
和 Product.php
,return $this->hasMany(Product::class, 'id');
在 Order.php
和 return $this->belongsTo(Order::class, 'product_id');
在 Product.php
.
在我的OrderController
public function index()
{
$orders = Order::latest()->paginate(10);
return view('admin.order.order')->with([
'orders' => $orders,
]);
}
在我看来
@foreach($orders as $order)
<tr data-href="{{ route('orders.view', $order->id) }}">
<td></td>
<td>{{ $order->products[0]->product_name }}</td>
<td>{{ $order->order_quantity }}</td>
<td>{{ $order->customer_name }}</td>
<td>{{ $order->customer_tel_no }}</td>
<td width="300">{{ $order->customer_address }} Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>
<td>{{ $order->total_amount }}</td>
<td>
<span class="badge text-white badge-lg bg-{{ $order->is_delivered == false ? 'warning' : 'success' }}">
{{ $order->is_delivered == false ? 'Not yet delivered!' : 'Delivered!' }}
</span>
</td>
<td>{{ $order->created_at->diffForHumans() }}</td>
</tr>
@endforeach
一切正常,直到我在订单中有超过 15 条记录时 table 我收到错误消息 Undefined array key 0
请问我也是新手 Laravel 谢谢
我认为这是因为这条线:
<td>{{ $order->products[0]->product_name }}</td>
您确定每个订单都有一个产品吗?
这个错误是因为 $order 没有任何产品,因此没有数组键 0
您可以在链接时使用 php 的新可选语法,即 ?->
https://stitcher.io/blog/php-8-nullsafe-operator
$order->products?->first()->product_name
如果此特定 $order 上没有任何产品(假设您使用的是 php 8!)
如果您使用的是旧版本 php,您应该考虑
@if(count($order->products))
<td>{{ $order->products[0]->product_name }}</td>
@endif
另一种方法是,使用 laravel 的 optional()
助手,如下所示
<td>{{ optional($order->products)->first()->product_name }} </td>