首页 > 解决方案 > 使用 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;
    }
    ...

标签: phpsymfonysymfony-3.4symfony-console

解决方案


回应您的评论:

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

再次查看您的代码,您错误地使用findByUsername(返回结果数组)而不是findOneByUsername(仅返回一个结果或null)。


推荐阅读