Jaka jest różnica między find (), findOrFail (), first (), firstOrFail (), get (), list (), ToArray()

Jaka jest różnica między tymi metodami

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

Używałem ich i każdy z nich daje inny wynik i czasami muszę dodać toArray() na końcu get() ponieważ moja funkcja oczekuje tablicy. Czy inne metody również nie będą produkować tablic?

Author: Halnex, 2015-10-09

1 answers

  1. find($id) pobiera identyfikator i Zwraca pojedynczy model. Jeśli nie istnieje żaden pasujący model, zwraca null.

  2. findOrFail($id) pobiera identyfikator i Zwraca pojedynczy model. Jeśli nie ma pasującego modelu, wyświetla błąd1.

  3. first() zwraca pierwszy rekord znaleziony w bazie danych. Jeśli nie istnieje żaden pasujący model, zwraca null.

  4. firstOrFail() zwraca pierwszy rekord znaleziony w bazie danych. Jeśli nie ma pasującego modelu, wyrzuca błąd1.

  5. get() zwraca kolekcję modeli pasujących do zapytania.

  6. pluck($column) zwraca kolekcję tylko wartości w danej kolumnie. W poprzednich wersjach Laravela metoda ta nosiła nazwę lists.

  7. toArray() konwertuje model / kolekcję na prostą tablicę PHP.


Uwaga: zbiór jest / align = "left" / Działa podobnie do tablicy, ale ma wiele dodatkowych funkcji, jak widać w docs .

Niestety, PHP nie pozwala używać obiektu collection wszędzie tam, gdzie można użyć tablicy. Na przykład, używanie kolekcji w pętli foreach jest ok, a przekazywanie jej do array_map nie jest. Podobnie, jeśli wpiszesz argument-hint jako array, PHP nie pozwoli Ci przekazać mu kolekcji. Nowsze wersje PHP mają typ iterable, który może być użyty do zaakceptowania obu tablice i zbiory.

Jeśli kiedykolwiek chcesz uzyskać zwykłą tablicę ze zbioru, wywołaj jej all() metoda.


1 błąd rzucany przez metody findOrFail i firstOrFail jest ModelNotFoundException. Jeśli sam nie złapiesz tego wyjątku, Laravel odpowie 404 , czego chcesz przez większość czasu.

 82
Author: Joseph Silber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 13:56:19