php - update - ¿Cuál es la diferencia entre find(), findOrFail(), first(), firstOrFail(), get(), list(), toArray()
order by eloquent (2)
-
find($id)
toma una identificación y devuelve un solo modelo. Si no existe un modelo coincidente, devuelvenull
. -
findOrFail($id)
toma una identificación y devuelve un solo modelo. Si no existe un modelo coincidente, arroja un error 1 . -
first()
devuelve el primer registro encontrado en la base de datos. Si no existe un modelo coincidente, devuelvenull
. -
firstOrFail()
devuelve el primer registro encontrado en la base de datos. Si no existe un modelo coincidente, arroja un error 1 . -
get()
devuelve una colección de modelos que coinciden con la consulta. -
pluck($column)
devuelve una colección de solo los valores en la columna dada. En versiones anteriores de Laravel, este método se denominabalists
. -
toArray()
convierte el modelo / colección en una simple matriz PHP.
Nota: una colección es una matriz reforzada. Funciona de manera similar a una matriz, pero tiene muchas funciones adicionales, como puede ver en los documentos .
Desafortunadamente, PHP no le permite usar un objeto de colección en todas partes donde puede usar una matriz.
Por ejemplo, usar una colección en un bucle
foreach
está bien, pero pasarlo a
array_map
no lo está.
Del mismo modo, si escribe un argumento como
array
, PHP no le permitirá pasarle una colección.
Las versiones más recientes de PHP tienen el tipo de letra
iterable
, que se puede utilizar para aceptar tanto matrices como colecciones.
Si alguna vez desea obtener una matriz simple de una colección, llame a su método
all()
.
1
El error que arrojan los métodos
findOrFail
y
firstOrFail
es
ModelNotFoundException
.
Si no detecta esta excepción,
Laravel responderá con un 404
, que es lo que desea la mayor parte del tiempo.
¿Cuál es la diferencia entre estos métodos?
-
find()
-
findOrFail()
-
first()
-
firstOrFail()
-
get()
-
list()
-
toArray()
Los he estado usando y cada uno da un resultado diferente y, a veces, necesito agregar
toArray()
al final de
get()
porque mi función espera una matriz.
¿Los otros métodos no producirán matrices también?
Toda la información de @Joseph Silber es correcta y muy útil.
Quiero agregar una respuesta a la lista ()
De Laravel 5.2 El método de lista en los objetos Colección, Generador de consultas y Generador de consultas elocuentes se ha renombrado para arrancar. La firma del método sigue siendo la misma.