2013-06-12 11 views
27

Dies ist eine für interne App, Massenzuweisung Sicherheit ist kein Problem in diesem Fall.Gewusst wie: Massen zuweisen ein Update in Laravel 4?

Ich habe es mit sehr großen (zahlreichen) Formularfeldern zu tun, also wäre die Massenzuordnung der Benutzeränderungen großartig. Massenzuweisung scheint mit 'create()' zu funktionieren, aber nicht mit einer Suche & speichern.

Das ist, was ich habe:

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

Wie kann ich über sie gehen? Ich würde lieber nicht viele Dutzend Formulareingaben angeben.

Antwort

47

sollten Sie in der Lage sein fill(array $attributes) zu verwenden ...

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

Tnx-Knospe, das hat funktioniert. – mangonights

+0

Sehr schwierig, irgendwelche Informationen über die Füllmethode zu finden, wo in den Dokumenten ... – happyhardik

+0

Es ist immer noch in der [API Dokumentation für 5.2] (https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model .html # method_fill), es gibt eine Menge, die nicht in der Basisdokumentation behandelt wird, vielleicht könnten Sie den Betreuern empfehlen, dass diese hinzugefügt werden? –

19

Bei Massen geschrieben werden aktualisieren könnte noch kürzer.

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

'update' erstellt keine neuen Datensätze, während die' save' Methode eine neue Zeile erstellt, wenn sie noch nicht existiert und die bestehenden aktualisiert. – Wistar

+2

Ich denke, dass der Hauptzweck der update() ist, bestehende Zeilen zu aktualisieren ... – insign

1

innerhalb Laravel Massenzuordnung zu ermöglichen, müssen Sie hinzufügen:

protected $guarded = array(); 

in Ihrem Modell. Im Grunde ist dies erzählt Laravel keine Felder zu schützen, könnten Sie auch:

protected $fillable = array(); 

und dann die Felder, die Sie befüllbar wollen.

Hoffe, das hilft