Ich muss wissen, was ist der Unterschied von save()
und create()
Funktion in Laravel 5. Wo wir save()
und create()
anders verwenden kann?Was zwischen save(), create() Funktion in Laravel 5
Antwort
Model::create
ist ein einfacher Wrapper um $model = new MyModel(); $model->save()
die Umsetzung Siehe
/**
* Save a new model and return the instance.
*
* @param array $attributes
* @return static
*/
public static function create(array $attributes = [])
{
$model = new static($attributes);
$model->save();
return $model;
}
save()
save() Methode sowohl für das Speichern von neuem Modell verwendet wird, und die Aktualisierung existierende. Hier erstellen Sie ein neues Modell oder finden ein bestehendes, , indem Sie seine Eigenschaften einzeln einstellen und schließlich in der Datenbank speichern.
save() akzeptiert eine vollständige Eloquent Modellinstanz
$comment = new App\Comment(['message' => 'A new comment.']); $post = App\Post::find(1);` $post->comments()->save($comment);
()
- erstellen, während in der Methode erstellen Sie Arrays sind vorbei, das Setzen von Eigenschaften in Modell und besteht in der Datenbank in einem Schuss.
create() akzeptiert ein Klar PHP Array
$post = App\Post::find(1); $comment = $post->comments()->create([ 'message' => 'A new comment.', ]);
EDIT
@PawelMysior Wie erwähnt, bevor die Methode erstellen verwenden, müssen Sie nach Spalten, deren Werte zu markieren sind sicher einzustellen Durch die Massenzuweisung (wie Name, Geburtsdatum usw.) müssen wir unsere Eloquent-Modelle aktualisieren, indem wir eine neue Eigenschaft namens $ fillable bereitstellen. Das ist einfach ein Array mit den Namen der Attribute enthält, die sicher über Massenzuordnung zu setzen: ab: -Klasse Land erstreckt Modell {
protected $fillable = [ 'name', 'area', 'language', ];
}
Dank für Ihre antworten Sie, aber können Sie mir bitte mehr Ausarbeitung geben. Ich war durch das Laravel-Dokument gegangen, aber von dort habe ich nicht viel Ahnung. –
Vielen Dank für Ihre Detaillierung. –
Eine wichtige Sache zu beachten: Wenn Sie planen, create() 'zu verwenden, müssen alle Attribute, die Sie übergeben, im Attribut $ fillable im Modell aufgeführt werden. Siehe: https://laravel.com/docs/master/eloquent#mass-assignment – PawelMysior