Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel更新同一归属关系的多个_Php_Laravel_Relationship_Has And Belongs To Many - Fatal编程技术网

Php Laravel更新同一归属关系的多个

Php Laravel更新同一归属关系的多个,php,laravel,relationship,has-and-belongs-to-many,Php,Laravel,Relationship,Has And Belongs To Many,我有一个订单表和一个产品表,我将它们之间的关系设置为归属关系很好 但是,一个订单可以多次拥有相同的产品(如果他们想订购更多,管理员可以提供折扣) 例如: Order 1 has Product 1 x 5 (£1 each = £5 total) Product 1 x 2 (£0.75 each = £1.50 total) 如何更新单行?我尝试了以下操作,但这会更新所有行,因为它只接受产品ID: $order->products()->updateExistingPivot(

我有一个
订单
表和一个
产品
表,我将它们之间的关系设置为
归属关系
很好

但是,一个订单可以多次拥有相同的产品(如果他们想订购更多,管理员可以提供折扣)

例如:

Order 1 has

Product 1 x 5 (£1 each = £5 total)
Product 1 x 2 (£0.75 each = £1.50 total)
如何更新单行?我尝试了以下操作,但这会更新所有行,因为它只接受产品ID:

$order->products()->updateExistingPivot($productID, $values);
我也尝试了以下方法,但调用
update
方法时,
wherePivot
似乎没有多大效果,因为此产品的所有行都已更新

$pivotProduct = $order->products()->wherePivot('id', $pivotId)->first();
$pivotProduct->pivot->price = '0.75';
$pivotProduct->pivot->update();

已通过执行以下操作解决此问题:

 $pivotProduct = $order->products()->wherePivot('id', $pivotId)->first();
 $pivotProduct->pivot->where('id', $pivotId)->update($values);
第二行确保仅更新具有相同数据透视ID的行