Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

clarkeylogic's avatar

No query results for model [App\Player]

I am getting this error when simply trying to view a page, all the controller does is return a view with some seeded information.

My routes.php file:

Route::get('player/add', 'PlayerController@add')->middleware('auth');

The function on the PlayerController.php:

public function add(Request $request)
{
    return view('players.add', $this->post_repository->getPostFields());
}

The errors:

ModelNotFoundException in Builder.php line 303:
No query results for model [App\Player].
in Builder.php line 303
at Builder->firstOrFail() in Router.php line 869
at Router->substituteImplicitBindings(object(Route)) in Router.php line 842
at Router->substituteBindings(object(Route)) in Router.php line 825
at Router->findRoute(object(Request)) in Router.php line 691
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54

NotFoundHttpException in Handler.php line 103:
No query results for model [App\Player].
in Handler.php line 103
at Handler->render(object(Request), object(ModelNotFoundException)) in Handler.php line 48
at Handler->render(object(Request), object(ModelNotFoundException)) in Pipeline.php line 80
at Pipeline->handleException(object(Request), object(ModelNotFoundException)) in Pipeline.php line 54
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54

I have looked around and simply cannot work out what is going wrong, any ideas about what I could look into? Any help is much appreciated, thanks.

0 likes
11 replies
fraserk's avatar

Maybe this $this->post_repository->getPostFields() is not returning anything.

clarkeylogic's avatar

I put die() above the return, still the same problem, this also happens when I am not logged in, so the Auth Middleware doesn't even have a chance to redirect me. I am very lost with this...

sulayman's avatar

Try this return view('players.add',['postFields'=> $this->post_repository->getPostFields()]);

clarkeylogic's avatar

No luck with that either, it is breaking before it even gets to the Middleware (because if I am logged out I get the same error). Could there be something messed up?

wing5wong's avatar

Are you sure you dont have another route above that? If your die() isnt even being called that is a big sign, otherwise a middleware is interfering

1 like
SaeedPrez's avatar

You need to show your whole controller, you're using $this in your controller so I'm assuming you have some custom methods, maybe even a constructor?

clarkeylogic's avatar

Yes I am sure there is not another route above that, my routes.php file:

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::auth();
Route::get('register/verify/{confirmation_code}', 'Auth\AuthController@verify');

Route::get('posts', 'UserController@posts');
Route::get('settings', 'UserController@settings');

Route::get('players', 'PlayerController@index');
Route::get('player/{player}', 'PlayerController@view');
Route::post('players', 'PlayerController@search');
Route::get('player/add', 'PlayerController@add')->middleware('auth');
Route::get('player/edit/{player}', 'PlayerController@edit')->middleware('auth');
Route::post('player', 'PlayerController@store')->middleware('auth');
Route::put('player/{player}', 'PlayerController@change')->middleware('auth');
Route::delete('player/delete/{player}', 'PlayerController@destroy')->middleware('auth');

Route::get('teams', 'TeamController@index');
Route::get('team/{team}', 'TeamController@view');
Route::post('teams', 'TeamController@search');
Route::get('team/add', 'TeamController@add')->middleware('auth');
Route::get('team/edit/{team}', 'TeamController@edit')->middleware('auth');
Route::post('team', 'TeamController@store')->middleware('auth');
Route::put('team/{team}', 'TeamController@change')->middleware('auth');
Route::delete('team/delete/{team}', 'TeamController@destroy')->middleware('auth');

My controller is around 200 lines long, but here is what is above:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Player;
use App\Repositories\PlayerRepository;
use App\Repositories\PostRepository;

class PlayerController extends Controller
{
    protected $player_repository, $post_repository;
    
    public function __construct(PlayerRepository $player_repository, PostRepository $post_repository)
    {
        $this->player_repository = $player_repository;
        $this->post_repository = $post_repository;
    }
    
    public function index(Request $request)
    {
        $players = $this->player_repository->getPlayerPosts();
        $post_fields = $this->post_repository->getPostFields();
        
        $array = array_merge($players, $post_fields);
        
        return view('players.index', $array);
    }
    
    public function add(Request $request)
    {
        return view('players.add', $this->post_repository->getPostFields());
    }

If it is something with my Middleware, what can I do to debug it? It seems to have happened completely at random, I don't know where to start.

SaeedPrez's avatar
Level 50

@clarkeylogic what happens if you try this..

Route::get('players', 'PlayerController@index');
Route::get('player/add', 'PlayerController@add')->middleware('auth'); // move this above player/{player}
Route::get('player/{player}', 'PlayerController@view'); // move this below player/add
Route::post('players', 'PlayerController@search');
10 likes
clarkeylogic's avatar

It works :) Thank you very much!

So I need to sort my routes by when the function appears on the controller?

SaeedPrez's avatar

Laravel doesn't know that /add is not included in /{player}. That's why you need to put /add first, so it matches it first.

Another option is to define what {player} is..

Route::get('player/{player}', 'PlayerController@view')->where('player', '[0-9]+'); // if it's id, only digits

documentation

4 likes

Please or to participate in this conversation.