【发布时间】:2018-05-04 10:15:16
【问题描述】:
我正在尝试使用 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()吗? -
添加了非常标准的字符串类型和设置器。我也在其他二传手上尝试过,也收到了同样的问题。
-
你能在
$user->setRole()调用之前添加get_class($user)的输出吗?您是否在检查您的方法是否返回null值(例如,未找到用户)? -
天啊! @ccKep,你肯定把我引向了正确的道路。结果表明 $user 不是对象而是数组。是啊,我说什么???然后我发现我用
findByUsername而不是findOneByUsername。将此作为答案和错误投票!谢谢!
标签: php symfony symfony-3.4 symfony-console