laravel路由无法访问,报404,No query results for model [AppModels...]

Posted jkko123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel路由无法访问,报404,No query results for model [AppModels...]相关的知识,希望对你有一定的参考价值。

今天遇到了一个问题,在routes/web.php中配置了路由,但始终无法访问该路由,一直报404。

Route::resource(‘gift_packs‘, ‘GiftPacksController‘, [‘only‘ => [‘index‘, ‘show‘, ‘create‘, ‘store‘, ‘update‘, ‘edit‘, ‘destroy‘]]);
Route::get(‘gift_packs/test‘, ‘[email protected]‘)->name(‘gift_packs.test‘);

然后我在app/Exceptions/Handler.php文件中,修改render()方法:

public function render($request, Exception $exception)
{
    dd($exception);
    return parent::render($request, $exception);
}

把异常打印出来:

No query results for model [App\Models\GiftPack].

先通过 php artisan route:list 查看路由列表

| Domain | Method                                 | URI                                                   | Name                            | 
|        | GET|HEAD                               | gift_packs/{gift_pack}                                | gift_packs.show                 | 
|        | DELETE                                 | gift_packs/{gift_pack}                                | gift_packs.destroy              | 
|        | PUT|PATCH                              | gift_packs/{gift_pack}                                | gift_packs.update               | 
|        | GET|HEAD                               | gift_packs/{gift_pack}/edit                           | gift_packs.edit                 | 
|        | GET|HEAD                               | gift_packs/test                                       | gift_packs.test                 | 

原因是laravel路由访问检测是从上到下的。

针对同路径,gift_packs/{gift_pack} 和 gift_packs/test,当我们访问 /gift_packs/test时,路由 gift_packs/{gift_pack} 已经解析了。

字符串 ‘test‘ 无法获取GiftPack模型数据,所以就报错了。

解决方法是修改路由配置的上下位置:

Route::get(‘gift_packs/test‘, ‘[email protected]‘)->name(‘gift_packs.test‘);
Route::resource(‘gift_packs‘, ‘GiftPacksController‘, [‘only‘ => [‘index‘, ‘show‘, ‘create‘, ‘store‘, ‘update‘, ‘edit‘, ‘destroy‘]]);

这样就可以了。

 

  

以上是关于laravel路由无法访问,报404,No query results for model [AppModels...]的主要内容,如果未能解决你的问题,请参考以下文章

laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块

React报错:Laravel React-Router browserHistory 刷新子页面报错404

laravel 8 修改APP_ENV为sim,路由访问就变成404了?

Laravel 路由错误 404

laravel 访问不存在的路由跳转问题!(异常处理)

Laravel API 路由 404 未找到修复?