Symfony getData() 返回空值

Posted

技术标签:

【中文标题】Symfony getData() 返回空值【英文标题】:Symfony getData() return null value 【发布时间】:2019-05-15 10:57:57 【问题描述】:

我是Symfony 的新成员,我有现有的DocumentUser.php,这是我的旧文件。

use FOS\UserBundle\Model\User as BaseUser;

class User extends BaseUser

    /**
     * @MongoDB\Id(strategy="auto")
     */
    protected $id;

    /**
     * @MongoDB\Field(type="string")
     */
    protected $name;

    /**
     * @MongoDB\Field(type="string")
     */
    protected $email;

    public function getId()
    
        return $this->id;
    

    public function setName($name)
    
        $this->name = $name;

        return $this;
    

    public function getName()
    
       return $this->name;
    


然后我需要添加新的归档电子邮件,然后我更改了User.php,这里是更新的文件。

use FOS\UserBundle\Model\User as BaseUser;

    class User extends BaseUser
    
        /**
         * @MongoDB\Id(strategy="auto")
         */
        protected $id;

        /**
         * @MongoDB\Field(type="string")
         */
        protected $name;

        /**
         * @MongoDB\Field(type="string")
        */
       protected $email;

        public function getId()
        
            return $this->id;
        

        public function setName($name)
        
            $this->name = $name;

            return $this;
        

        public function getName()
        
           return $this->name;
        

        public function setEmail($email)
        
            $this->email = $email;

            return $this;
        

        public function getEmail()
        
           return $this->email;
        

    

然后我尝试获取电子邮件其显示null 的价值,我查看了我的数据库并且电子邮件字段中存在价值。这是我的代码。

$user = $this->dm()->getRepository('UserBundle:User')->find($id);
var_dump($user->getEmail());

我还使用以下命令删除了所有缓存。

php app/console doctrine:cache:clear-metadata 
php app/console doctrine:cache:clear-query  
php app/console doctrine:cache:clear-result 

也可以使用rm -rf var/cache 删除缓存,但它仍然给出空值。 我怎么了?你能帮帮我吗?

【问题讨论】:

没有使用注释定义的电子邮件属性。 哎呀!我忘了在这里添加。我更新了我的问题。 尝试转储 $user ? @JulesR,是的,我检查了电子邮件也有空值。 但是你之前设置了吗? 【参考方案1】:

电子邮件已在 Baseuser 中定义。也许你必须添加 parent::getEmail() 或完全删除 getter

【讨论】:

谢谢,我检查了 BaseUser.php,没有任何用于电子邮件的 Getter 或 Setter 方法。 FOSUserbundle 已包含它。因此,Getter 必须是 public function getEmail() $this->email = parent::getEmail();返回 $this->email;

以上是关于Symfony getData() 返回空值的主要内容,如果未能解决你的问题,请参考以下文章

jquery 使用return返回空值

Symfony2:没有空值的选择

symfony2 原则允许空值?

如何在 symfony2 验证器中允许空值

Symfony在序列化期间跳过空值

Symfony 抛出 ServiceCircularReferenceException