php - 将对象注入控制器会引发错误
问题描述
我在 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 } }
解决方案
错误中的命名空间建议是App\CoursesApp\Teacher
正确的还是您正在寻找模型?
如果您正在寻找其他东西,您use
在控制器中的陈述可能是错误的。
如果该类App\CoursesApp\Teacher
不是模型,Laravel 无法通过主键加载它,也无法正确注入它,这意味着它只会将“1”作为字符串传递。
推荐阅读
- sql - 如何将用户定义的函数应用于 BigQuery SQL 中的多个列?
- javascript - 稍后在代码中访问时数组为空
- python - 欧拉和改进欧拉(Heun)在精度上的区别
- cookies - 无法在服务器端 Nuxt.js 上设置 cookie
- javascript - 如何在 django 项目中使用 ajax 显示搜索结果?
- python - 在 macbook pro M1 上安装 Tensorflow 时出现“zsh:非法硬件指令 python”
- mongodb - 如何将 localhost 更改为 MongoDb 和 Heroku 主机
- django - 返回不属于 Generics.listAPIView 中任何模型的内容
- r - R:创建一个将向量的前 n 个元素大写的函数
- json - 数据库中带有转义字符的 Godot/gdscript 字符串