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框架的控制器如何获取路由传过来的可选参数?
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