Muchas veces cuando realizamos una consulta utilizando SQL o una API, es posible que no se obtenga el resultado esperado debido a que el contenido que el usuario intenta ver no existe. Nosotros como desarrolladores debemos tener en cuenta situaciones como esa en nuestra aplicación, es por ello que en esta lección veremos cómo podemos retornar de forma manual errores 404 y también como hacerlo de forma automática cuando un modelo no es encontrado.

Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Retornar una vista con status 404

Cuando retornamos el llamado al helper view() desde una acción, Laravel va a retornar el contenido de la vista con el status HTTP 200 (OK). Nosotros podemos retornar una vista con status 404 (no encontrado) utilizando el helper response y luego encadenando el llamado al método view. Al método view pasamos como primer argumento el nombre de la vista, como segundo argumento los datos y como tercer argumento el status HTTP:

return response()->view('errors.404', [], 404);

Uso de findOrFail

El método findOrFail intentará encontrar el registro correspondiente a la llave primaria pasada como argumento, y si este no es encontrado devolverá una excepción de tipo ModelNotFoundException:

$user = User::findOrFail($id);

También podemos utilizar el método firstOrFail, que devuelve el primer resultado de la consulta y si ningún registro es encontrado retorna una excepción ModelNotFoundException:

$user = User::where('posts', '>', 100)->firstOrFail();

Actividades

Recuerda mejorar el diseño de las pantallas que hemos creado hasta ahora, agregar más detalles para cada usuario y compartir tus capturas en los comentarios o en las cuentas de Twitter: @sileence y @Stydenet.

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Generar URLs en Laravel Lección siguiente Enlace de modelos a rutas en Laravel