Skip to content

All topics  /  Laravel

Laravel 8 - How To Handle "No Query Results For Model" Error

Laravel

Teams applying “Laravel 8 - How To Handle "No Query Results For Model" Error” in a production project can use the complete guide to record implementation, review and debugging time, then compare that effort with tests and shipped functionality instead of treating activity as performance by itself.

Before copying the example into a live application, confirm version-specific behaviour with the official Laravel website and test it against the project’s actual database and runtime.

Oct 27, 2021

Laravel 8 - How To Handle "No Query Results For Model" Error

Hello Friends,

Yesterday, I was just working on my restful API with User model and I found following error on show method: "No query results for the model [App\\User] 1", first I search on google about No query results for a model issue and fix that. but I want to understand why this error comes. i found why No query results for the model is an error on show, edit and update method when you used a model as a parameter. So basically when you pass id in URL then laravel model will check id is found or not on given model. So it returns ModelNotFoundException exception. we can return as a response.

We can simple handle exception and return a better response. So just we will handle ModelNotFoundException on our Handler.php file. So you need to just add following code to your Handler.php.

I am going to give you full error so let's understand what i write and what is the issue i fetched and how to resolved that.

My Controller Method :


<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ModelController extends Controller
{
    /**
    * Display the specified resource.
    *
    * @param  \App\Models\Model  $Model
    * @return \Illuminate\Http\Response
    */
    public function show(User $user)
    {
        return response()->json($user->toArray());
    }
}

My Error :

No query results for model [App\\User] 1

Handle Exception : app/Exceptions/Handler.php

<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\Eloquent\ModelNotFoundException;
class Handler extends ExceptionHandler
{
    /**
    * A list of the exception types that are not reported.
    *
    * @var array
    */
    protected $dontReport = [
        //
    ];
    /**
    * A list of the inputs that are never flashed for validation exceptions.
    *
    * @var array
    */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];
    /**
    * Report or log an exception.
    *
    * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
    *
    * @param  \Exception  $exception
    * @return void
    */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }
    /**
    * Render an exception into an HTTP response.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Exception  $exception
    * @return \Illuminate\Http\Response
    */
    public function render($request, Exception $exception)
    {
        if ($e instanceof ModelNotFoundException) {
            return response()->json(['error' => 'Data not found.']);
        }
        return parent::render($request, $exception);
    }
}