使用 Symfony 更新命令中的实体

Updating an Entity in Command with Symfony

我正在尝试使用 Symfony 3.4 为控制台创建一个命令。基本上是通过控制台添加角色。

首先,我通过ContainerAwareCommand

获得了教义
$em = $this->getContainer()->get('doctrine')->getManager();

然后像这样从输入中获取用户对象

$user = $em->getRepository(User::class)->findByUsername($username);

此行显示错误:

$user->setRole($role);

错误:

Error: Call to a member function setRole()

实体:

/**
  * @ORM\Column(name="role", type="string", nullable=true)
  */
  private $role;
 .....
  public function setRole($role)
    {
        $this->role = $role;

        return $this;
    }
    ...

回复您的评论:

->setRole 调用之前通过 get_class() 查看 $user 进行调试导致它是一个数组的结论。

再次查看您的代码,您错误地使用了 findByUsername(returns 一组结果)而不是 findOneByUsername(returns 只有一个结果或 null).