¿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 get()porque mi función espera una matriz. ¿No producirán los otros métodos también matrices?

Respuestas:
find($id)toma una identificación y devuelve un solo modelo. Si no existe un modelo coincidente, regresanull.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, regresanull.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 se llamaba a este métodolists.toArray()convierte el modelo / colección en una matriz PHP simple.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 cualquier lugar donde pueda usar una matriz. Por ejemplo, usar una colección en un
foreachbucle está bien, pasarla aarray_mapno lo es. De manera similar, si escribe-insinúa un argumento comoarray, PHP no le permitirá pasarle una colección. A partir de PHP 7.1, existe laiterablesugerencia de tipo , que se puede utilizar para aceptar matrices y colecciones.Si alguna vez desea obtener una matriz simple de una colección, llame a su
all()método.1 El error generado por los métodos
findOrFailyfirstOrFailes aModelNotFoundException. Si no detecta esta excepción usted mismo, Laravel responderá con un 404 , que es lo que desea la mayor parte del tiempo.fuente
$post = Post::with('user.votes')->with('subreddit.moderators')->findOrFail($post->id);para poder acceder,$post->subreddit->moderators->user_idpero eso es darUndefined property: Illuminate\Database\Eloquent\Collection::$user_id- puedo acceder$post->subreddit->moderatorspero no cuando agreguéuser_id- ¿por qué?subredditEs un modelo único, con unamoderatorspropiedad.moderatorses una colección, no un solo modelo. No puede acceder a nada directamente desde él. Puedes marcar el primero si quieres:$post->subreddit->moderators[0]->user_id