2017-06-21 2 views
0

Ich habe eine Orders Tabelle und eine Products Tabelle, meine Beziehung zwischen diesen ist als belongsToMany Beziehung eingerichtet, die gut funktioniert.Laravel update mehrere der gleichen gehörenToMany Beziehung

Eine Bestellung kann jedoch mehrmals das gleiche Produkt haben (falls sie mehr bestellen möchten und der Administrator einen Rabatt anbieten kann).

Zum Beispiel:

Order 1 has 

Product 1 x 5 (£1 each = £5 total) 
Product 1 x 2 (£0.75 each = £1.50 total) 

Wie kann ich eine einzelne Zeile aktualisieren? Ich habe folgendes versucht, aber diese aktualisiert alle Zeilen, wie es nur die Produkt-ID akzeptiert:

$order->products()->updateExistingPivot($productID, $values); 

Ich habe auch die folgende versucht, aber die wherePivot scheint nicht zu viel Kraft, wenn die update Aufruf Verfahren wie alle Zeilen für dieses Produkt sind

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

Antwort

0

Verwaltet dieses Problem beheben, indem Sie folgendes tun:

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

diese zweite l Ine stellt sicher, dass nur die Zeile mit der gleichen PivotId aktualisiert wird.