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 的行。
我有一个 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 的行。