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:
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.