Внедрение объекта в контроллер вызывает ошибку

У меня есть проект в laravel с моделью под названием Учитель.

У меня есть файл модели, контроллер с этим кодом.

/**
  * @param Teacher $Teacher
  * @return \App\Http\Resources\Teacher
  */
public function show(Teacher $Teacher) : \App\Http\Resources\Teacher
{
    return new \App\Http\Resources\Teacher($Teacher);
}

В файле маршрута у меня есть этот код

$prefix = '/api/v2/teachers';

$router->group([
   'prefix' => $prefix,
   'namespace' => 'CarApp',
], function () use ($router) {

$router->get('/{Teacher}', 'TeacherController@show');
$router->get('/', 'TeacherController@list');

});

Это ошибка, которую я получаю, когда делаю так.

http://project.local/api/v2/teachers/1

{ "errors": { "type": "Symfony\Component\Debug\Exception\FatalThrowableError", "message": "Аргумент 1, переданный в App\Http\Controllers\CarApp\TeacherController::show(), должен быть экземпляром App\CoursesApp\Teacher, указана строка", "code": 500 } }


person edica    schedule 18.09.2019    source источник
comment
Вам нужно опубликовать определение модели учителя   -  person Vinay    schedule 18.09.2019


Ответы (1)


Правильно ли предложено пространство имен App\CoursesApp\Teacher в ошибке или вы ищете модель?

Если вы ищете что-то другое, ваш оператор use в вашем контроллере может быть неправильным.

Если этот класс App\CoursesApp\Teacher не является моделью, Laravel не может загрузить его по первичному ключу и не может внедрить его должным образом, что означает, что он просто передаст «1» в виде строки.

person Darryl E. Clarke    schedule 18.09.2019