将对象注入控制器会引发错误
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”作为字符串传递。
我在 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”作为字符串传递。