2012-08-27 62 views
3

我正在使用FOSUserBundle和一個新的Symfony項目,該項目必須使用現有的模式。按照說明,我的用戶實體擴展了FOS \ UserBundle \ Entity \ User,但電子郵件列名爲「email_addr」,而不是「email」。由於父母定義了$ email,我不能重新聲明它來附加我的註釋。如何使用Doctrine Annotations來更改實體子類中的列名稱?

/** 
    * @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中的列名?

回答

4

我找到了答案:

More about Doctrine implementations

如果需要改變映射(比如到外地名稱適應舊的數據庫),唯一的辦法就是寫整個映射再次沒有繼承映射超類的映射。在這種情況下,您的實體應該直接從FOS \ UserBundle \ Model \ User(以及該組的FOS \ UserBundle \ Model \ Group)擴展。

相關問題