如何在为Laravel中的数据透视表赋值时使用saveMany?

时间:2017-09-16 19:11:10

标签: laravel laravel-5

我在laravel中有一个多对多的关系,其中一个数据透视表将产品和订单与一个order_product表连接,其数据透视值为数量。

现在我可以创建订单并使用以下方法在循环中添加每个产品:

foreach($products as $product){
    $order->products()->save($product,["quantity" => 3]);
}

但是,由于我必须创建包含数百种产品的条目,因此对每个产品而言,访问数据库对我来说似乎并不理想,所以我正在尝试使用它:

$order->products()->saveMany([$product1,$product2,$product3]);

我的问题是:在第二个例子中,如何使用saveMany,我可以为每个产品设置枢轴值数量吗?

1 个答案:

答案 0 :(得分:3)

你应该使用attach。 saveMany用于没有数据透视表的一对多关系。如果你有数据透视表,那就是多对多的关系。然后代码看起来像这样:

$data = [];
foreach ($products as $product) {
   $data[$product->id] = ['quantity' => 3];
}
$order->products()->attach($data);

文档:https://laravel.com/docs/5.5/eloquent-relationships