Was ist der Unterschied zwischen der Methode save () und update () in Laravel?
Ich habe die save () -Methode im Falle einer Aktualisierungsabfrage verwendet, aber in einigen Fällen fungiert sie als Aktualisierung und in einigen Fällen fungiert sie als Einfügeabfragefunktion. Bitte lassen Sie mich wissen, was genau der Unterschied zwischen ihnen ist.
Mit diesen Methoden können Sie Daten in der Datenbank speichern.
Die Methode save()
funktioniert als INSERT
, wenn Sie ein neues Modell erstellen, das derzeit nicht in Ihrer Datenbanktabelle enthalten ist:
Auch kann es sich wie ein UPDATE
verhalten, wenn Ihr Modell bereits in der Datenbank existiert. Sie können also das Modell abrufen, einige Eigenschaften ändern und dann save()
it, indem Sie db's UDPATE
:
Mit der Methode update()
können Sie Ihre Modelle bequemer aktualisieren:
Sie sollten also ein abgerufenes Modell keiner Variablen zuweisen. Aktualisierte Eigenschaften werden als Argumente übergeben.
Beispiele und weitere Informationen in den Laravel-Dokumenten .
Es gibt nur eine Sache, die in dem, was @ginopane über den Unterschied gesagt hat, ungesagt ist. Wenn Sie die update-Methode für query builder result
verwenden, ignoriert laravel $fillable
oder $guard
des Arrays Ihres Modells. Dies ist besonders wichtig, wenn Sie Input::all()
als Argument zum Aktualisieren verwenden möchten:
Also in diesem Fall, wenn Sie App\Flight::where('active', 1)->update(Input::all());
verwenden, wird alles in Ihrer Datenbank aktualisiert, auch wenn Sie es in $fillable
setzen. Stellen Sie daher sicher, dass Sie die Methoden save
und update
für Eloquent instance
und nicht Query Builder eins verwenden. Der folgende Code ist in Ordnung, auch wenn der Benutzer Felder eingibt, die Sie nicht in Ihre Datenbanktabelle einfügen oder aktualisieren möchten:
Nun, egal was mit der FORM hier passiert wird, nur name
und email
werden aktualisiert.
Hoffe, diese vollständige @ ginopane Antwort
Tags und Links laravel-5