当我创建一个将用于健康领域患者研究的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的类中完成的......
答案 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”或其他东西。 ..