By default, when you use an Eloquent model’s findOrFail in a Laravel 5 application and it fails, it returns the following error:
ModelNotFoundException in Builder.php line 129:
No query results for model [App\Model].
But it’d be much more ideal if, instead, you could just display a “404 Page Not Found” page.
Well, you can, very easily.
Catch ModelNotFoundException exceptions when using findOrFail
Open up the app/Exceptions/Handler.php file, and add the code shown below to the top of the render function:
.
.
.
public function render($request, Exception $e)
{
if ($e
instanceof
\Illuminate\Database\Eloquent\ModelNotFoundException)
{
abort(404);
}
return parent::render($request, $e);
}
.
.
.
And that code will work universally, when you call findOrFail on any of your Eloquent models.
So now, when findOrFail fails to find an object, you’ll receive the typical:
404 Not Found
There you go!
