updateOrCreate 仅更新一条记录

问题描述 投票:0回答:1

我有一个记录列表,我想用新值更新数量,但是当我使用更新或创建方法时,它只更新一条记录。

$data = DB::table('inventory_items')->select('inventory_items.*')
    ->join('sorder_parts', 'inventory_items.id', 'sorder_parts.inventory_id')
    ->where('sorder_parts.sorder_id', '=', $id)
    ->selectraw('inventory_items.quantity - sorder_parts.quantity AS new_quantity')
    ->get();


foreach ($data as $product_item) {
    $reduce_quantity = InventoryItem::updateOrCreate(['id' => $product_item->id],
        ['quantity' => $product_item->new_quantity]);
    dd($data, $reduce_quantity);
}
laravel database eloquent model controller
1个回答
0
投票

当您知道该表中存在记录时,无需更新插入,因为您正在循环查询查询的集合。设置并更新属性:

  foreach ($data as $product_item) {
    $product_item->quantity = $product_item->new_quantity;
    $product_item->save();
}

此外,请确保您尝试填充的属性已在 InventoryItem 模型的可填充数组中定义(如果您尚未定义 $guarded 属性)。

© www.soinside.com 2019 - 2024. All rights reserved.