Symfony2 FOSUserBundle - 摆脱用户电子邮件字段的简单方法

时间:2013-03-01 16:19:33

标签: php symfony fosuserbundle

当我创建一个将用于健康领域患者研究的Web应用程序时,我希望所有用户都是完全匿名的。我是否可以通过简单的方式摆脱email和email_canonical字段,而无需在包本身中重写内容,例如通过在我自己的包中对我的User Class执行某些操作?

编辑:我这样做了:

/**

*   @ORM\Column(nullable=true)

**/

protected $email;



/**

*   @ORM\Column(nullable=true)

**/

protected $emailCanonical; 

在我的用户实体类中。 Bu twhen我做php app / console doctrine:schema:update --force i get

  

[学说\ ORM \映射\ MappingException]
    在实体'Pan100 \ MoodLogBundle \ ALL
上重复定义“电子邮件”列     ty \ User'在字段或鉴别器列映射中。

编辑2:忘了说这是在扩展FOUserBundle的模型类User作为BaseUser的类中完成的......

1 个答案:

答案 0 :(得分:10)

OK!

我做了:

...
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @ORM\AttributeOverrides({
*              @ORM\AttributeOverride(name="email", column=@ORM\Column(nullable=true)),
*              @ORM\AttributeOverride(name="emailCanonical", column=@ORM\Column(nullable=true, unique=false))
*  
* })  
*/

class User extends BaseUser
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */

    protected $id;
...(code emitted)

稍后我会发现是否需要更多 - 我可能必须覆盖一些用于创建用户的FOSUserBundle方法。至少“php app / console fos:user:create testuser”命令需要一封电子邮件......但它不再是唯一的,所以如果我以后受阻,我可以添加字符串“none”或其他东西。 ..