如何使用 Doctrine Annotations 更改实体子类中的列名称?

2024-04-21

我正在将 FOSUserBundle 与一个新的 Symfony 项目一起使用,该项目必须使用现有架构。我的用户实体按照说明扩展了 FOS\UserBundle\Entity\User,但电子邮件列被命名为“email_addr”而不是“email”。由于父级定义了 $email 我无法重新声明它来附加我的注释。

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

我得到的例外是:

[Doctrine\ORM\Mapping\MappingException]                                                                                
Property "email" in "Foo\DataBundle\Entity\User" was already declared, but it must be declared only once  

我的问题是:

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

我找到了一个答案:

有关 Dotrine 实施的更多信息 https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/doctrine.md#replacing-the-mapping-of-the-bundle

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Doctrine Annotations 更改实体子类中的列名称? 的相关文章

随机推荐