Métodos de búsqueda y Not Found Exceptions

11/17

Lectura

Cuando vimos cómo implementar los modelos para hacer uso de la información utilizamos un controlador llamado ProjectController, desde donde escribimos las funciones y hacemos el llamado del modelo Project para hacer toda la consulta. Pero existe la posibilidad de que, por alguna razón, el modelo se haya movido o tenga un error, esto automáticamente nos dañaría el flujo de trabajo de la consulta y no tendríamos cómo capturarlo de forma inmediata.

Para esto tenemos dos métodos que nos ayudan a manejar una excepción. En caso de no encontrar el modelo, nos retornarán un objeto de tipo ModelNotFoundException y podemos operar con él en caso de error.

findOrFail 🔍

$project = Project::findOrFail(1);

Esto nos retornaría en la variable $project el registro cuyo id (project_id) sea igual 1, en caso de no encontrar el modelo Project, retornará un error que también quedará en la variable $project.

firstOrFail 1️⃣

Este método es bastante similar al anterior, sin embargo, este nos retornará el primer resultado que coincida con la condición que le pedimos, pero también nos retornará una excepción de no encontrar el modelo Project.

$project = Project::where('is_active', '=', 1)->firstOrFail();

En este ejemplo tendríamos una petición que traería el primer registro de proyectos cuyo campo is_active sea 1, si no encuentra el modelo, nos devuelve una excepción sin romperse.

Ten en cuenta que si no capturas la excepción, se enviará un error 404 al usuario y ahí sí se rompería tu flujo de trabajo.

La siguiente imagen te puede ilustrar cómo un objeto de tipo ModelNotFoundException funciona de colchón para apoyar los vacíos en caso de que tengamos un problema por un resultado vacío o roto:

Model Not Found Exception

En la siguiente clase aprenderás a insertar registros en la base de datos utilizando un Modelo de Eloquent para empezar a alimentar tus tablas.

Aportes 13

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

El método findOrFail() de los modelos de Laravel es muy usado en los controladores ya que nos permite recuperar un registro de un modelo a partir de su ID sin necesidad de comprobar si existe. El resultado es que en caso de no existir, el método findOrFail lanza una excepción ModelNotFoundException.
Si no se maneja la excepción regresa un error 404, esto ayuda a proteger nuestro sitio cuando manos criminales tratan de hacer cosas indebidas en nuestro sitio web.

las ilustraciones muy creativas 😃

el metodo find, solo busca por id, asi que usualmente uso first, para hacer el where por cualquier campo

Si bajan podran encontrar el tema: Not Found Exceptions o pongale asi en el buscador de la documentacion. Esta super bien explicado y bueno si vamos a leer mejor hacerlo de la documentacion.

https://laravel.com/docs/6.x/eloquent#retrieving-single-models

muy bien, fácil de entender y rápido de leer c:

excelente!!

La verdad que no dibuja nada mal la profa pero apreciaría más diagramas hechos con algún programa.

Lo que más me gustó,no sabia y lo usaré en mis proyectos, el uso de firstOrFail() 😉

Muy interesante la ilustracion del ModelNotFoundException

Sin duda esto es útil, aunque también puedes usar un try…catch, pero efectivamente, esto te sirve como colchón en caso de errores inesperados

Muy útil estos métodos.

Muy útil

Muy creativo.