Проблема с маршрутом Laravel: «Нет результатов запроса к model»

#laravel #laravel-routing

Вопрос:

Я довольно смущен тем, как работает МАРШРУТ в этих случаях.

Я определил такую комбинацию маршрутов:

 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/{task} маршрут, который совпадает, до того, как он достигнет tasks/calendar маршрута.

Заказ не вызывает проблем у пользователей.:

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

потому что у него есть дополнительный сегмент url ( /tasks ), который предотвращает его столкновение users/{user} .

Проверьте свои текущие маршруты с помощью php artisan route:list .