2013-06-12 7 views
27

Jest to aplikacja wewnętrzna, zabezpieczenie przydziału masy nie stanowi problemu w tym przypadku.Jak: masa przypisać aktualizację w Laravel 4?

Mam do czynienia z bardzo dużymi (licznymi) polami formularzy, więc masowe przypisywanie edycji przez użytkownika byłoby wspaniałe. Przypisanie masy wydaje się działać dobrze z funkcją "create()", ale nie z robieniem zapisu &.

To jest to, co mam:

$post_data = Input::all(); 
$formobj = HugeForm::find($id); 
$formobj->save($post_data); 

Jak mam iść na ten temat? Wolałbym nie określać wielu dziesiątek danych wejściowych formularza.

Odpowiedz

47

Powinieneś być w stanie wykorzystać fill(array $attributes) ...

$post_data = Input::all(); 
$formobj = HugeForm::find($id); 
$formobj->fill($post_data); 
$formobj->save(); 
+0

Pączek Tnx, który działał. – mangonights

+0

Bardzo trudno jest znaleźć informacje o metodzie wypełniania gdziekolwiek w dokumentach ... – happyhardik

+0

Ciągle jest w [dokumentach API dla wersji 5.2] (https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model .html # method_fill), jest wiele rzeczy, których nie ma w podstawowej dokumentacji, może mógłbyś polecić opiekunom, żeby to zostało dodane? –

19

W przypadku masy aktualizuje go można zapisać nawet krócej.

$post_data = Input::all(); 
HugeForm::find($id)->update($post_data); 
+1

'update' nie utworzy nowych rekordów, natomiast metoda' save' utworzy nowy wiersz, jeśli jeszcze nie istnieje i zaktualizuje istniejące. – Wistar

+2

Myślę, że głównym celem aktualizacji() jest aktualizacja istniejących wierszy ... – insign

1

Aby umożliwić masowe zadanie w laravel trzeba dodać:

protected $guarded = array(); 

Do modelu. Zasadniczo mówi laravel nie chroni żadnych pól, można również użyć:

protected $fillable = array(); 

a następnie ustawić pola, które mają być napełniane.

Mam nadzieję, że to pomoże