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.phpProduct.phpreturn $this->hasMany(Product::class, 'id');Order.phpreturn $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>