[英]Set a fixed value for a field in a multi-row insert in Laravel
我有一个数组$cart
:
$cart = [
["product_id" => 1, "price" => 20, "amount" => 5, "tax" => 15],
["product_id" => 2, "price" => 30, "amount" => 10, "tax" => 20],
...
];
我可以
DB::table('order_products')->insert($cart);
但是我需要将此数组插入具有相同列+ order_id
的表中。 所有行的order_id
均相同,它是前一个查询的插入ID。 是否可以为所有行的order_id
设置一个固定值?
当您使用雄辩的模型并且您的Order
模型具有hasMany关系order_products()
,可以在该关系上使用createMany()
方法:
$order->order_products()->createMany($cart);
对于save()
和saveMany()
方法以及create()
和createMany()
,如果在关系上调用,则将自动从父$order
实体中获取外键(在您的情况下为order_id
)。
在文档中,您还会找到以下说明:
在使用
create
方法之前,请务必查看有关属性质量分配的文档。
最重要的是您已经弄清楚的$fillable
属性。
请注意,您还应该能够对订单本身使用create()
。 我不知道为什么它对您不起作用。 检查Order
模型中的$fillable
属性。 通常,订单也属于用户-因此您需要分配user_id
,该数组中可能缺少该用户名。 可行的是
$order = Auth:user()->orders()->create($orderArray);
user_id
将来自Auth:user()
并自动分配给订单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.