如何使用条令注释来更改实体子类中的列名



我正在将FOSUserBundle与一个新的Symfony项目一起使用,该项目必须使用现有的模式。正如说明所说,我的用户实体扩展了FOS\UserBundle\entity\user,但电子邮件列的名称是"email_addr",而不是"电子邮件"。由于父级定义了$email,所以我不能重新声明它来附加我的注释。

 /**
  * @var string $emailAddr
  *
  * @ORMColumn(name="email_addr", type="text", nullable=false)
  */
 protected $email;

我得到的例外是:

[DoctrineORMMappingMappingException]                                                                                
Property "email" in "FooDataBundleEntityUser" was already declared, but it must be declared only once  

我的问题是:

  • Doctrine2子类如何使用注释来更改父类中定义的内容
  • 或者如何覆盖FOSUserBundle中的列名

我找到了答案:

更多关于条令实施

如果需要更改映射(例如,使字段名适应遗留数据库),唯一的解决方案是重新编写整个映射,而不从映射的超类继承映射。在这种情况下,您的实体应直接从FOS\UserBundle\Model\User(以及组的FOS\UserBundle\Module\Group)扩展。

看起来条令2.3添加了这些功能。不幸的是,SO决定我必须复制他们网站上已经存在的信息,以避免"琐碎的回答"。

@新条令2.3 中的AssociationOverride和@AttributeOverride

相关内容

  • 没有找到相关文章

最新更新