Jaka jest różnica między find (), findOrFail (), first (), firstOrFail (), get (), list (), ToArray()
Jaka jest różnica między tymi metodami
- find ()
- findOrFail ()
- first ()
- firstOrFail ()
- get ()
- list ()
- 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?
1 answers
find($id)
pobiera identyfikator i Zwraca pojedynczy model. Jeśli nie istnieje żaden pasujący model, zwracanull
.findOrFail($id)
pobiera identyfikator i Zwraca pojedynczy model. Jeśli nie ma pasującego modelu, wyświetla błąd1.first()
zwraca pierwszy rekord znaleziony w bazie danych. Jeśli nie istnieje żaden pasujący model, zwracanull
.firstOrFail()
zwraca pierwszy rekord znaleziony w bazie danych. Jeśli nie ma pasującego modelu, wyrzuca błąd1.get()
zwraca kolekcję modeli pasujących do zapytania.pluck($column)
zwraca kolekcję tylko wartości w danej kolumnie. W poprzednich wersjach Laravela metoda ta nosiła nazwęlists
.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.
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