繁体   English   中英

在Laravel中的多行插入中为字段设置固定值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM