我有一个数组$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
设置一个固定值?
答案 0 :(得分:1)
当您使用雄辩的模型并且您的Order
模型具有 hasMany 关系order_products()
时,可以在该关系上使用createMany()
方法:>
$order->order_products()->createMany($cart);
对于save()
和saveMany()
方法以及create()
和createMany()
的方法,如果在关系上调用,则为外键(在您的情况下为order_id
)将自动从父$order
实体获取。
在documentation中,您还会找到此注释:
在使用
create
方法之前,请务必阅读文档 在属性mass assignment上。
最重要的是您已经弄清楚的$fillable
属性。
请注意,您还应该可以对订单本身使用create()
。我不知道为什么它对您不起作用。检查$fillable
模型中的Order
属性。通常,订单也属于用户-因此您需要分配user_id
,该数组中可能缺少该$order = Auth:user()->orders()->create($orderArray);
。可行的方法是
user_id
Auth:user()
将从{{1}}提取并自动分配给订单。