Laravel 中间件替换索引中没有模型[App\Tornament]的查询结果
我最近犯了这个错误。我调试了它,它甚至没有进入我的索引方法 所以,我想从日志来看,这是一个替代性的发现,但我真的不知道问题出在哪里 以下是日志的例外情况:Laravel 中间件替换索引中没有模型[App\Tornament]的查询结果,laravel,Laravel,我最近犯了这个错误。我调试了它,它甚至没有进入我的索引方法 所以,我想从日志来看,这是一个替代性的发现,但我真的不知道问题出在哪里 以下是日志的例外情况: Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\Tournament]. in /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src
Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\Tournament].
in /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:311
Stack trace:
#0 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(801): Illuminate\Database\Eloquent\Builder->firstOrFail()
#1 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(39): Illuminate\Routing\Router->substituteImplicitBindings(Object(Illuminate\Routing\Route))
#2 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#3 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#4 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#5 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#7 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#8 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#9 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#10 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#11 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#12 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#13 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#14 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#16 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#17 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#18 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#19 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#20 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(644): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#21 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(618): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#22 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(596): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#23 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(267): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#24 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#25 /Users/julien/Documents/Proyectos/laravel/vendor/proengsoft/laravel-jsvalidation/src/RemoteValidationMiddleware.php(53): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#26 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Proengsoft\JsValidation\RemoteValidationMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 /Users/julien/Documents/Proyectos/laravel/vendor/barryvdh/laravel-debugbar/src/Middleware/Debugbar.php(51): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#29 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Barryvdh\Debugbar\Middleware\Debugbar->handle(Object(Illuminate\Http\Request), Object(Closure))
#30 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#31 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#32 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#33 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#34 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#35 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#36 /Users/julien/Documents/Proyectos/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#37 /Users/julien/Documents/Proyectos/laravel/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#38 /Users/julien/.composer/vendor/laravel/valet/server.php(106): require('/Users/julien/D...')
#39 {main}
代码:
路线如下:
Route::group(['middleware' => ['auth']],
function () {
Route::get('tournaments/deleted', 'TournamentController@getDeleted');
});
以下是路线:
+--------+-----------+-------------------------------------------------------------------------------+----------------------------+----------------------------------------------------------------------------+----------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------------------------------------------------------------------+----------------------------+----------------------------------------------------------------------------+----------------------------+
| | POST | tournaments | tournaments.store | App\Http\Controllers\TournamentController@store | web,auth,ownTournament |
| | GET|HEAD | tournaments | tournaments.index | App\Http\Controllers\TournamentController@index | web,auth |
| | GET|HEAD | tournaments/create | tournaments.create | App\Http\Controllers\TournamentController@create | web,auth,ownTournament |
| | GET|HEAD | tournaments/deleted | | App\Http\Controllers\TournamentController@getDeleted | web,auth,ownTournament |
| | POST | tournaments/{tournamentId}/trees | storeAllTree | App\Http\Controllers\PreliminaryTreeController@store | web,auth |
| | GET|HEAD | tournaments/{tournamentSlug}/invite/{token} | | App\Http\Controllers\ChampionshipController@create | web |
| | DELETE | tournaments/{tournament} | tournaments.destroy | App\Http\Controllers\TournamentController@destroy | web,auth,ownTournament |
| | GET|HEAD | tournaments/{tournament} | tournaments.show | App\Http\Controllers\TournamentController@show | web,auth |
| | PUT|PATCH | tournaments/{tournament} | tournaments.update | App\Http\Controllers\TournamentController@update | web,auth,ownTournament |
| | GET|HEAD | tournaments/{tournament}/edit | tournaments.edit | App\Http\Controllers\TournamentController@edit | web,auth,ownTournament |
| | GET|HEAD | tournaments/{tournament}/invite | | App\Http\Controllers\InviteController@create | web,auth |
| | POST | tournaments/{tournament}/invite/{invite}/categories | | App\Http\Controllers\ChampionshipController@store | web |
| | GET|HEAD | tournaments/{tournament}/register | | App\Http\Controllers\TournamentController@register | web |
| | POST | tournaments/{tournament}/teams | teams.store | App\Http\Controllers\TeamController@store | web,auth |
| | GET|HEAD | tournaments/{tournament}/teams | teams.index | App\Http\Controllers\TeamController@index | web,auth |
| | GET|HEAD | tournaments/{tournament}/teams/create | teams.create | App\Http\Controllers\TeamController@create | web,auth |
| | GET|HEAD | tournaments/{tournament}/teams/{team} | teams.show | App\Http\Controllers\TeamController@show | web,auth |
| | PUT|PATCH | tournaments/{tournament}/teams/{team} | teams.update | App\Http\Controllers\TeamController@update | web,auth |
| | DELETE | tournaments/{tournament}/teams/{team} | teams.destroy | App\Http\Controllers\TeamController@destroy | web,auth |
| | GET|HEAD | tournaments/{tournament}/teams/{team}/edit | teams.edit | App\Http\Controllers\TeamController@edit | web,auth |
| | POST | tournaments/{tournament}/users | tournament.users.store | App\Http\Controllers\CompetitorController@store | web,auth |
| | GET|HEAD | tournaments/{tournament}/users | tournament.users.index | App\Http\Controllers\CompetitorController@index | web,auth |
| | GET|HEAD | tournaments/{tournament}/users/create | tournament.users.create | App\Http\Controllers\CompetitorController@create | web,auth |
| | DELETE | tournaments/{tournament}/users/{user} | users.destroy | App\Http\Controllers\CompetitorController@destroy | web,auth |
| | PUT|PATCH | tournaments/{tournament}/users/{user} | tournament.users.update | App\Http\Controllers\CompetitorController@update | web,auth |
| | GET|HEAD | tournaments/{tournament}/users/{user} | tournament.users.show | App\Http\Controllers\CompetitorController@show | web,auth |
| | GET|HEAD | tournaments/{tournament}/users/{user}/edit | tournament.users.edit | App\Http\Controllers\CompetitorController@edit | web,auth |
+--------+-----------+-------------------------------------------------------------------------------+----------------------------+----------------------------------------------------------------------------+----------------------------+
web.php
Route::group(['middleware' => ['auth']],
function () {
Route::resource('tournaments', 'TournamentController', ['names' => ['index' => 'tournaments.index', 'show' => 'tournaments.show', 'create' => 'tournaments.create', 'edit' => 'tournaments.edit', 'store' => 'tournaments.store', 'update' => 'tournaments.update']]);
Route::resource('/tournaments/{tournament}/teams', 'TeamController', ['names' => ['index' => 'teams.index', 'create' => 'teams.create', 'edit' => 'teams.edit', 'store' => 'teams.store', 'update' => 'teams.update']]);
Route::get('testtesttest/deleted', 'TournamentController@getDeleted');
Route::resource('tournaments/{tournament}/users', 'CompetitorController', ['names' => ['index' => 'tournament.users.index', 'show' => 'tournament.users.show', 'create' => 'tournament.users.create', 'edit' => 'tournament.users.edit', 'store' => 'tournament.users.store', 'update' => 'tournament.users.update']]);
Route::delete('tournaments/{tournamentId}/categories/{championshipId}/users/{userId}/delete', 'CompetitorController@deleteUser');
Route::put('tournaments/{tournamentId}/categories/{championshipId}/users/{userId}/confirm', 'CompetitorController@confirmUser');
Route::get('tournaments/{tournament}/invite', 'InviteController@create');
});
知道会是什么吗????以前,它工作得很好 firstOrFail()是一种方法,如果没有行与给定条件匹配,它将抛出ModelNotFound
异常。因为这是在路由中发生的,这表明Laravel正在尝试向路由中注入一个模型我猜您当前的URL要么有无效的比赛id,要么完全丢失了一个。当Laravel达到指定的标准时,它将在此实例中失败。firstOrFail()是一种方法,如果没有行与给定的标准匹配,它将抛出一个ModelNotFound
异常。因为这是在路由中发生的,这表明Laravel正在尝试向路由中注入一个模型我猜您当前的URL要么有无效的比赛id,要么完全丢失了一个。当Laravel达到a时,它将在此实例中失败。请参阅
如果您在routes文件中使用资源控制器,则任何其他路由都需要在此之前进行
在您的情况下,您需要执行以下操作:
// supplemental/additional routes first
Route::get('tournaments/deleted', 'TournamentController@getDeleted');
// then the resource
Route::resource('tournaments', 'TournamentController', ['names' => ['index' => 'tournaments.index', 'show' => 'tournaments.show', 'create' => 'tournaments.create', 'edit' => 'tournaments.edit', 'store' => 'tournaments.store', 'update' => 'tournaments.update']]);
这可防止路由器尝试将锦标赛/已删除的
加载为锦标赛。使用已删除的
作为锦标赛ID显示
路由。如果资源控制器前面有已删除的
路由,则Laravel将首先匹配该路由(如果可以),如果不匹配,则继续。在您的情况下,它在进入tournames/deleted
之前与tournames/{tournames}
匹配,请参见
如果您在routes文件中使用资源控制器,则任何其他路由都需要在此之前进行
在您的情况下,您需要执行以下操作:
// supplemental/additional routes first
Route::get('tournaments/deleted', 'TournamentController@getDeleted');
// then the resource
Route::resource('tournaments', 'TournamentController', ['names' => ['index' => 'tournaments.index', 'show' => 'tournaments.show', 'create' => 'tournaments.create', 'edit' => 'tournaments.edit', 'store' => 'tournaments.store', 'update' => 'tournaments.update']]);
这可防止路由器尝试将
锦标赛/已删除的
加载为锦标赛。使用已删除的
作为锦标赛ID显示
路由。如果资源控制器前面有已删除的
路由,则Laravel将首先匹配该路由(如果可以),如果不匹配,则继续。在您的情况下,它在进入锦标赛/已删除的锦标赛之前匹配到锦标赛/{tourbank}
,没有模型[App\tourbank]的查询结果
——没有任何结果。问题是什么?我的代码中没有first或Fail,也许如果你发布了代码,我们就会知道。正如我在帖子中所说的,这个错误甚至没有进入我的代码…但我可以显示代码的任何部分,但控制器不值得,因为第一行中的dd没有执行没有模型[App\Tournament]的查询结果
——没有任何结果。问题是什么?我的代码中没有first或Fail可能如果你发布了代码,我们就会知道。正如我在帖子中所说的,这个错误甚至没有进入我的代码…但我可以显示代码的任何部分,但控制器不值得,因为第一行中的dd没有执行添加的路由定义,我在URL中没有参数:(您确定没有其他路由冲突和/或覆盖此路由吗?所有相关信息都表明,在路由绑定替换过程中失败。已发布的路由列表已添加路由定义,我在URL中没有参数:(您确定没有其他路由冲突和/或覆盖此路由吗?所有相关信息都表明,在路由绑定替换过程中失败。已发布的路由列表