我在laravel中有一个多对多的关系,其中一个数据透视表将产品和订单与一个order_product表连接,其数据透视值为数量。
现在我可以创建订单并使用以下方法在循环中添加每个产品:
foreach($products as $product){
$order->products()->save($product,["quantity" => 3]);
}
但是,由于我必须创建包含数百种产品的条目,因此对每个产品而言,访问数据库对我来说似乎并不理想,所以我正在尝试使用它:
$order->products()->saveMany([$product1,$product2,$product3]);
我的问题是:在第二个例子中,如何使用saveMany,我可以为每个产品设置枢轴值数量吗?
答案 0 :(得分:3)
你应该使用attach。 saveMany用于没有数据透视表的一对多关系。如果你有数据透视表,那就是多对多的关系。然后代码看起来像这样:
$data = [];
foreach ($products as $product) {
$data[$product->id] = ['quantity' => 3];
}
$order->products()->attach($data);