Laravel雄辩的创建相关项目不会保存

问题描述

我今天遇到了一个奇怪的问题/错误

我有一个订单表和一个分配产品表(order_items) 创建新订单时,一切正常,项目已按原样保存。


$order = Orders::create($request->all());

if (!empty($order)) {
    foreach ($request->get('items') as $item) {
        $item['order_id'] = $order->id;
        OrderItems::create($item);
    }
}

问题在于,无论出于何种原因,我以后都无法添加项目。 我没有收到任何错误错误的答复,即使order_items表的自动增量增加了。


Orders::findOrFail($id)->update($request->all());

if(isset($data['items']) && is_array($data['items'])) {
    foreach ($data['items'] as $item) {
        if (!empty($item['id'])) {
            OrderItems::findOrFail($item['id'])->update($item);
            continue;
        }

        $item['order_id'] = $id;
        OrderItems::create($item);
    }
}

解决方法

如果找不到您的商品,这将引发异常,并且脚本的退出将停止。

OrderItems::findOrFail($item['id'])->update($item);

您需要捕获这样的异常:

try {
    OrderItems::findOrFail($item['id'])->update($item);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
    $item['order_id'] = $id;
    OrderItems::create($item);
}