2012-11-01 109 views
2

我使用Symfony2与教条,除了一个多对一/一对多的自引用关系外没有关系问题。Doctrine2多对一自我引用:父母不生成

我有一个实体客户可以有零个,一个或多个实体(也是客户)。当我使用'doctrine:generate:entities BundleName'生成实体时,我的Entity Customer.php中只有一个var'$ entities',并且没有var'$ mother_house'。此外,生成的迁移(使用doctrine:migrations:diff)不包含创建新字段'mother_house_id'。

在Customer.orm.yml的模式是这样的一个:

Acme\Bundle\CustomerBundle\Entity\Customer: 
    type: entity 
    table: customer 
    repositoryClass: Acme\Bundle\CustomerBundle\Entity\CustomerRepository 
    fields: 
     id: 
      type: integer 
      id: true 
      generator: 
       strategy: AUTO 
     company_name: 
      type: string 
      length: 255 
     reference: 
      type: string 
      length: '20' 
     created_at: 
      type: datetime 

    oneToMany: 
     entities: 
      targetEntity: Customer 
      mappedBy: mother_house 

    manyToOne: 
     mother_house: 
      targetEntity: Customer 
      inversedBy: entities 
      joinColumn: 
       mother_house_id: 
        referencedColumnName: id 

    manyToOne: 
     created_by: 
      targetEntity: Acme\Bundle\UserBundle\Entity\User 
      joinColumn: 
       created_by: 
        referencedColumnName: id 
    lifecycleCallbacks: { } 

回答

1

我发现我的错误。

相同类型的所有关系(多对一一对一,一对多等)必须在一个场“多对一”进行分组,“一对多”等

所以我只是有改变

manyToOne: 
    mother_house: 
     targetEntity: Customer 
     inversedBy: entities 
     joinColumn: 
      mother_house_id: 
       referencedColumnName: id 

manyToOne: 
    created_by: 
     targetEntity: Acme\Bundle\UserBundle\Entity\User 
     joinColumn: 
      created_by: 
       referencedColumnName: id 

manyToOne: 
    mother_house: 
     targetEntity: Customer 
     inversedBy: entities 
     joinColumn: 
      mother_house_id: 
       referencedColumnName: id 
    created_by: 
     targetEntity: Acme\Bundle\UserBundle\Entity\User 
      joinColumn: 
      created_by: 
       referencedColumnName: id