firstOrCreate()
prüft, ob alle Argumente vorhanden sind, bevor finds
eine Übereinstimmung vorliegt . Wenn nicht alle Argumente übereinstimmen, wird eine neue Instanz des Modells erstellt.
Wenn Sie nur ein bestimmtes Feld überprüfen möchten, verwenden Sie es firstOrCreate(['field_name' => 'value'])
mit nur einem Element im Array. Dies gibt das erste übereinstimmende Element zurück oder erstellt ein neues, wenn keine Übereinstimmungen gefunden werden.
Der Unterschied zwischen firstOrCreate()
und firstOrNew()
:
firstOrCreate()
erstellt automatisch einen neuen Eintrag in der Datenbank, wenn keine Übereinstimmung gefunden wird. Andernfalls erhalten Sie den passenden Artikel.
firstOrNew()
Sie erhalten eine neue Modellinstanz, mit der Sie arbeiten können, wenn keine Übereinstimmung gefunden wurde. Sie wird jedoch nur dann in der Datenbank gespeichert, wenn Sie dies explizit tun (Aufruf save()
des Modells). Andernfalls erhalten Sie den passenden Artikel.
Die Wahl zwischen dem einen oder anderen hängt davon ab, was Sie tun möchten. Wenn Sie die Modellinstanz ändern möchten, bevor sie zum ersten Mal gespeichert wird (z. B. Festlegen eines name
oder eines Pflichtfelds), sollten Sie verwenden firstOrNew()
. Wenn Sie die Argumente nur verwenden können, um sofort eine neue Modellinstanz in der Datenbank zu erstellen, ohne sie zu ändern, können Sie sie verwenden firstOrCreate()
.