【问题标题】:Injecting object into controller throw an error将对象注入控制器会引发错误
【发布时间】:2019-09-18 14:28:58
【问题描述】:

我在 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

{ “错误”:{ “类型”: "Symfony\Component\Debug\Exception\FatalThrowableError", "message": "参数 1 传递给 App\Http\Controllers\CarApp\TeacherController::show() 必须是 App\CoursesApp\Teacher 的实例,字符串给定”,“代码”:500 } }

【问题讨论】:

  • 需要发布Teacher模型的定义

标签: php laravel lumen php-7.2


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多