web-dev-qa-db-ger.com

Was ist der Unterschied zwischen find (), findOrFail (), first (), firstOrFail (), get (), list (), toArray ()

Was ist der Unterschied zwischen diesen Methoden:

  1. find()
  2. findOrFail()
  3. first()
  4. firstOrFail()
  5. get()
  6. list()
  7. toArray()

Ich habe sie verwendet und jedes gibt ein anderes Ergebnis und manchmal muss ich toArray() am Ende von get() hinzufügen, weil meine Funktion ein Array erwartet. Werden die anderen Methoden nicht auch Arrays erzeugen?

58
Halnex
  1. find($id) nimmt eine ID und gibt ein einzelnes Modell zurück. Wenn kein übereinstimmendes Modell vorhanden ist, wird null zurückgegeben.

  2. findOrFail($id) nimmt eine ID und gibt ein einzelnes Modell zurück. Wenn kein übereinstimmendes Modell vorhanden ist, wird ein Fehler ausgegeben1.

  3. first() gibt den ersten in der Datenbank gefundenen Datensatz zurück. Wenn kein übereinstimmendes Modell vorhanden ist, wird null zurückgegeben.

  4. firstOrFail() gibt den ersten in der Datenbank gefundenen Datensatz zurück. Wenn kein übereinstimmendes Modell vorhanden ist, wird ein Fehler ausgegeben1.

  5. get() gibt eine Sammlung von Modellen zurück, die mit der Abfrage übereinstimmen.

  6. pluck($column) gibt eine Sammlung nur der Werte in der angegebenen Spalte zurück. In früheren Versionen von Laravel hieß diese Methode lists.

  7. toArray() konvertiert das Modell/die Sammlung in ein einfaches PHP Array.


Hinweis: eine Sammlung ist ein aufgepepptes Array. Es funktioniert ähnlich wie ein Array, verfügt jedoch über viele zusätzliche Funktionen, wie Sie in die Dokumentation sehen können.

Leider lässt PHP nicht zu, dass Sie ein Auflistungsobjekt überall dort verwenden, wo Sie ein Array verwenden können. Wenn Sie beispielsweise eine Auflistung in einer foreach -Schleife verwenden, übergeben Sie sie an array_map Ist das nicht. Wenn Sie ein Argument wie array eingeben, lässt PHP) nicht zu, dass Sie eine Auflistung übergeben. Neuere Versionen von = PHP haben den Typ iterable, mit dem sowohl Arrays als auch Collections akzeptiert werden können.

Wenn Sie jemals ein einfaches Array aus einer Sammlung erhalten möchten, rufen Sie die all() -Methode auf.


1 Der von den Methoden findOrFail und firstOrFail ausgelöste Fehler ist ein ModelNotFoundException . Wenn Sie diese Ausnahme nicht selbst abfangen, Laravel antwortet mit einem 404 , das ist es, was Sie die meiste Zeit wollen.

141
Joseph Silber

Alle Informationen von @Joseph Silber sind korrekt und sehr nützlich.

Ich möchte eine Antwort zur Liste hinzufügen ()

From Laravel 5.2 Die Listenmethode für die Objekte Collection, Query Builder und Eloquent Query Builder wurde in Rupfen umbenannt. Die Methodensignatur bleibt unverändert.

1
Nirav Bhoi