将对象注入控制器会引发错误

Injecting object into controller throw an error

我在 laravel 中有一个项目,其中包含一个名为 Teacher 的模型。

我有模型文件,带有此代码的控制器。

/**
  * @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": "Argument 1 passed to App\Http\Controllers\CarApp\TeacherController::show() must be an instance of App\CoursesApp\Teacher, string given", "code": 500 } }

错误中App\CoursesApp\Teacher的命名空间建议是否正确,或者您正在寻找模型?

如果您正在寻找其他东西,您控制器中的 use 语句可能是错误的。

如果 class App\CoursesApp\Teacher 不是模型,Laravel 无法通过主键加载它并且无法正确注入它意味着它只会将“1”作为字符串传递。