2017-06-21 56 views
0

我有一個Orders表和Products表,我之間的關係設置爲belongsToMany關係,這工作正常。Laravel更新多個相同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(); 

回答

0

管理通過執行來解決這個以下:

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

該第二升ine確保只更新具有相同pivotId的行。