Php 使用Symfony更新命令中的实体
我正在尝试使用Symfony 3.4为console创建一个命令。基本上是通过控制台添加角色 首先,我能够通过Php 使用Symfony更新命令中的实体,php,symfony,symfony-3.4,symfony-console,Php,Symfony,Symfony 3.4,Symfony Console,我正在尝试使用Symfony 3.4为console创建一个命令。基本上是通过控制台添加角色 首先,我能够通过containerawarecomand $em = $this->getContainer()->get('doctrine')->getManager(); 然后从输入中获取用户对象,如下所示 $user = $em->getRepository(User::class)->findByUsername($username); 此行显示错误: $us
containerawarecomand
$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
(返回结果数组)而不是findOneByUsername
(只返回一个结果或null
)。回应您的评论:
在调用->setRole
之前,通过get_class()
查看$user
进行调试,从而得出它是一个数组的结论
再次查看代码时,您错误地使用了
findByUsername
(它返回一个结果数组)而不是findOneByUsername
(它只返回一个结果或null
)。能否显示您的用户实体?角色是其他对象的引用吗?您是否在用户实体中使用了方法setRole()
?添加了非常标准的字符串类型和setter。我也在其他setter上试用过,也收到了同样的问题。你能在$user->setRole()调用之前添加get\u class($user)
的输出吗?您是否正在检查您的方法是否返回null
值(例如,找不到用户)?天哪@ccKep,你一定把我引向了正确的道路。结果表明$user不是一个对象,而是一个数组。是的,我说了什么???。然后我发现我使用了findByUsername
而不是findOneByUsername
。把这个作为答案,我来投票!非常感谢。你能显示你的用户实体吗?角色是其他对象的引用吗?您是否在用户实体中使用了方法setRole()
?添加了非常标准的字符串类型和setter。我也在其他setter上试用过,也收到了同样的问题。你能在$user->setRole()调用之前添加get\u class($user)
的输出吗?您是否正在检查您的方法是否返回null
值(例如,找不到用户)?天哪@ccKep,你一定把我引向了正确的道路。结果表明$user不是一个对象,而是一个数组。是的,我说了什么???。然后我发现我使用了findByUsername
而不是findOneByUsername
。把这个作为答案,我来投票!非常感谢。