Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Symfony更新命令中的实体_Php_Symfony_Symfony 3.4_Symfony Console - Fatal编程技术网

Php 使用Symfony更新命令中的实体

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

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

首先,我能够通过
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
。把这个作为答案,我来投票!非常感谢。