Laravel更新多个相同的belongsToMany关系

Laravel update multiple of the same belongsToMany relationship

我有一个 Orders table 和一个 Products table,我将它们之间的关系设置为 belongsToMany 关系,工作正常。

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

例如:

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);

我也尝试了以下方法,但是 wherePivot 在调用 update 方法时似乎没有太大效果,因为该产品的所有行都已更新

$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);

第二行确保只更新具有相同 pivotId 的行。