Laravel 路由问题:“模型没有查询结果”

Posted

技术标签:

【中文标题】Laravel 路由问题:“模型没有查询结果”【英文标题】:Laravel route issue: "No query results for model" 【发布时间】:2021-10-10 19:51:54 【问题描述】:

我对 ROUTE 在这些情况下的工作方式感到很困惑。

我已经定义了这样的路由组合:

Route::apiResource('users', 'UserController');
Route::get('users/user/tasks', 'UserController@tasks');

一切都很好。没有任何问题。 但是

我对另一个模型做了同样的事情:

Route::apiResource('tasks', 'TaskController');
Route::get('tasks/calendar', 'TaskController@calendar');

对于这种组合,我得到了 NotFoundHttpException :/


"message": "No query results for model [App\\Models\\Task] calendar",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException", ...

如果我更改 URI,例如“任务/日历”,那么它可以工作。 我错过了什么?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

Route::get('tasks/calendar', 'TaskController@calendar');

必须移到上面:

Route::apiResource('tasks', 'TaskController');

因为apiResource 在到达tasks/calendar 路由之前公开了匹配的tasks/task 路由。

订单不会导致用户路由出现问题:

Route::get('users/user/tasks', 'UserController@tasks');

因为它有一个额外的 url 段 (/tasks) 可以防止它与 users/user 发生冲突。

使用php artisan route:list查看您当前的路线。

【讨论】:

以上是关于Laravel 路由问题:“模型没有查询结果”的主要内容,如果未能解决你的问题,请参考以下文章

Laravel、AngularJS 和 CORS 的路由问题

php中laravel框架的控制器如何获取路由传过来的可选参数?

text 接下来和前la laravel

php Usar la clase Db en Laravel para hacer consultas a la base de datos

markdown Para definir布局de la forma tradicional con Blade en Laravel usamos la directiva @yield de es

Laravel 为外部用户登录成功设置会话或令牌 - 无用户仅数据库 Api 用户