我有一个记录列表,我想用新值更新数量,但是当我使用更新或创建方法时,它只更新一条记录。
$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);
}
当您知道该表中存在记录时,无需更新插入,因为您正在循环查询查询的集合。设置并更新属性:
foreach ($data as $product_item) {
$product_item->quantity = $product_item->new_quantity;
$product_item->save();
}
此外,请确保您尝试填充的属性已在 InventoryItem 模型的可填充数组中定义(如果您尚未定义 $guarded 属性)。