2013-09-29 9 views
13

Ich versuche, zusätzliche Spaltendaten in einer Pivot-Tabelle in einer Beziehung viele zu viele zu aktualisieren.Laravel4 Update zusätzliche Spalten in der Pivot-Tabelle

Ich habe zwei Tabellen - Reservierung und Ressource mit einer Pivot-Tabelle verknüpft. Ich kann anhängen und arbeite mit dem Modell. Ich habe jedoch Mühe, eine der zusätzlichen Spalten in der Pivot-Tabelle zu aktualisieren.

Ich habe ein Objekt: ‚$ Reservierung‘ Von diesem Objekt, das ich ein anderes Objekt $ Ressourcen erstellt:

$resources = $reservation->resource()->get(); 

ich iteriert dann durch $resources eine foreach-Schleife wie folgt

foreach($resources as $resource) {...} 

Ich möchte dann eine Spalte namens gcal_id aktualisieren und verwende Folgendes:

$resource->pivot->gcal_id = "TEST"; 
$resource->save(); 

Wenn ich das Modell var_dump kann ich sehen, die Eigenschaft existiert den richtigen Wert, aber in der Datenbank selbst wird der Eintrag nicht aktualisiert - so funktioniert das Speichern

Ich habe die Spalten auf beiden Seiten der Beziehung aufgeführt mit diesem:

->withPivot('start', 'end', 'quantity', 'product_id','gcal_id') 

Da ich das Ressourcenobjekt haben, wie kann ich eine Spalte richtig in der Pivot-Tabelle aktualisieren und Datenbank speichern?

Dank

Antwort

24

Danach setzen Sie das Attribut auf den Dreh:

$resource->pivot->gcal_id = "TEST"; 

Sie scheinen die Ressource und nicht die Pivot zu speichern:

$resource->save(); 

Wenn Sie das wollen, Pivot zu speichern, ist das Speichern der Ressource nicht genug. sparen Anruf auf dem Dreh statt:

$resource->pivot->gcal_id = "TEST"; 
$resource->pivot->save(); 
+0

Danke Sie. Ich habe immer noch nicht die richtigen Beziehungen in meinem Kopf. Ich habe Mühe, die Methoden richtig zu machen. Ihre Lösung hat funktioniert - denken Sie daran, zu überlegen, welches Modell ich manipuliere – Ray

3

Eine Alternative statt save Methode ist die Methode Illuminate\Database\Eloquent\Relations\BelongsToMany\updateExistingPivot()

$reservation->resource()->updateExistingPivot($resource_id, ['gcal_id' => 'TEST']); 

Oder

$reservation->resource()->updateExistingPivot([1, 4, 5, 6], ['gcal_id' => 'TEST']); 

Diese Arbeit für mich in Laravel 4.2

Verwandte Themen