【问题标题】:Laravel route issue: "No query results for model"Laravel 路由问题:“模型没有查询结果”
【发布时间】: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,例如“任务/日历”,那么它可以工作。 我错过了什么?

感谢您的帮助。

【问题讨论】:

    标签: laravel laravel-routing


    【解决方案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查看您当前的路线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 2018-09-16
      • 2019-12-04
      相关资源
      最近更新 更多