2013-09-29 16 views
13

Próbuję zaktualizować dodatkowe dane kolumn w tabeli przestawnej w zależności od wielu do wielu.laravel4 zaktualizuj dodatkowe kolumny w tabeli przestawnej

Mam dwie tabele - rezerwację i zasoby powiązane z tabelą przestawną. Mogę dołączyć i pracuję z modelem. Jednak staram się zaktualizować jedną z dodatkowych kolumn w tabeli przestawnej.

mam obiektu: „$ zastrzeżenia” z tego obiektu utworzonego kolejne zasoby obiekt $ przy użyciu:

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

ja wtedy iteracja $resources wykorzystaniem foreach pętlę następująco

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

Następnie chcę zaktualizować kolumnę o nazwie gcal_id i używam następującego:

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

Jeśli I var_dump modelu mogę zobaczyć właściwość istnieje do poprawnej wartości, ale w samej bazie danych wpis nie jest aktualizowany - więc zapis nie działa

Mam kolumny wymienione po obu stronach relacji z tym:

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

Podany Mam obiekt zasobów, w jaki sposób można poprawnie zaktualizować kolumnę w tabeli przestawnej i zapisać w bazie danych?

Dzięki

Odpowiedz

24

Potem ustawić atrybut zwrotnicy:

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

Wydaje się zapisać zasób a nie pivot:

$resource->save(); 

Jeśli chcesz Pivot do zapisania, oszczędzanie zasobu to za mało. Połączenie zaoszczędzić na przegubu Zamiast:

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

Dziękuję ty. Wciąż nie mam dość związków w mojej głowie. Walczę o właściwe metody. Twoje rozwiązanie działało - musisz pamiętać o tym, jaki model manipuluję – Ray

3

Alternatywą zamiast save metodą jest metoda Illuminate\Database\Eloquent\Relations\BelongsToMany\updateExistingPivot()

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

Albo

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

To praca dla mnie w Laravel 4.2

Powiązane problemy