Laravel 路线问题:"No query results for model"

Laravel route issue: "No query results for model"

我对 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,例如 'task/calendar',那么它会起作用。 我错过了什么?

感谢您的帮助。

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 查看您当前的路线。