2017-02-14 65 views
3

,我得到了完整的错误是:学说 ORM 制图 MappingException中的Symfony

[Doctrine\ORM\Mapping\MappingException]          
    Property "followed" in "BackendBundle\Entity\Following" was already declared, but it must be declared only once 
当我试图在我的BackendBundle使实体

我有3代表在MYSQL “EMPRESAS”, “tecnicos”, “profesionistas” 和下面的具有每个表

CREATE TABLE following(
id int(255) not null auto_increment, 
user int(255), 
followed int(255), 
CONSTRAINT pk_following PRIMARY KEY(id), 
CONSTRAINT fk_empresas_following FOREIGN KEY(user) REFERENCES empresas(id), 
CONSTRAINT fk_tecnicos_following FOREIGN KEY(user) REFERENCES tecnicos(id), 
CONSTRAINT fk_profesionistas_following FOREIGN KEY(user) REFERENCES profesionistas(id), 
CONSTRAINT fk_empresas_followed FOREIGN KEY(followed) REFERENCES empresas(id), 
CONSTRAINT fk_tecnicos_followed FOREIGN KEY(followed) REFERENCES tecnicos(id), 
CONSTRAINT fk_profesionistas_followed FOREIGN KEY(followed) REFERENCES profesionistas(id) 
)ENGINE = InnoDb; 
的FK

BackendBundle\Entity\Following代码是

BackendBundle\Entity\Following: 
    type: entity 
    table: following 
    indexes: 
     fk_following_empresas: 
      columns: 
       - user 
     fk_following_tecnicos: 
      columns: 
       - user 
     fk_following_empresas: 
      columns: 
       - user 
     fk_followed_empresas: 
      columns: 
       - followed 
     fk_followed_tecnicos: 
      columns: 
       - followed 
     fk_followed_profesionistas: 
      columns: 
       - followed 
    id: 
     id: 
      type: integer 
      nullable: false 
      options: 
       unsigned: false 
      id: true 
      generator: 
       strategy: IDENTITY 
    manyToOne: 
     followed: 
      targetEntity: Empresa 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       followed: 
        referencedColumnName: id 
      orphanRemoval: false 
     followed: 
      targetEntity: Tecnico 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       followed: 
        referencedColumnName: id 
      orphanRemoval: false 
     followed: 
      targetEntity: Profesionista 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       followed: 
        referencedColumnName: id 
      orphanRemoval: false 
     user: 
      targetEntity: Empresa 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       user: 
        referencedColumnName: id 
      orphanRemoval: false 
     user: 
      targetEntity: Tecnico 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       user: 
        referencedColumnName: id 
      orphanRemoval: false 
     user: 
      targetEntity: Profesionista 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       user: 
        referencedColumnName: id 
      orphanRemoval: false 
    lifecycleCallbacks: { } 
+0

你能提供你的映射? – Hassan

+0

请提供'BackendBundle \ Entity \ Following'的代码 – SpartakusMd

+0

让我编辑提供代码的帖子 –

回答

1

它看起来就像你试图为3个不同的实体声明一个ManyToOne关系一样。单从语法看,你应该重复三次,重复followed

在我希望实体映射到使用相同属性的X个不同实体之前,我遇到了类似的问题。事情是这样的:

$人 - > $车辆

其中$车辆可自行车,汽车或滑板的一个实例(对不起,我挣扎了我的例子在这里)。

我不认为这是可能的使用原则,你可能需要添加其他实体(例如$人 - > $ vehicleOwnership - > $车辆)之间或使用doctrine inheritance