首页 > 解决方案 > 将对象注入控制器会引发错误

问题描述

我在 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": "传递给 App\Http\Controllers\CarApp\TeacherController::show() 的参数 1 必须是App\CoursesApp\Teacher, string given", "code": 500 } }

标签: phplaravellumenphp-7.2

解决方案


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

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

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


推荐阅读