2015-05-22 120 views
0

我为我的应用程序使用Symfony2并使用Doctrine .orm.yml文件进行关系映射。Symfony 2 - 如何设置三个实体之间具有多对多关系的关系

我有三个实体如下:

    包含ID(整数主键)
  1. 用户实体,USER_NAME(VARCHAR)

  2. 组合实体包含ID(整数主键),姓名(VARCHAR),USER_ID(FK从用户识别谁创造了投资组合),其中包含ID(整数主键)

  3. 进步实体,progress_text(VARCHAR)

我的问题是,我不知道如何设置三个实体,即投资组合,用户和进步之间的多对多关系。

我想设置的方式的关系,使得被作为这种关系的结果创建的新表中包含以下字段:

  1. USER_ID
  2. portfolio_id
  3. progress_id
  4. created_at
  5. updated_at
  6. type

在上面的列表created_at中,updated_at和type是我用于某些业务规则目的的字段。

请一些身体帮助我写他们的.orm.yml文件。我知道Symfony2中有内置命令可以生成实体及其对应的.orm.yml文件。但我不知道如何在他们相应的文件中编写上面所需的关系。

回答

0

您需要为此关系创建单独的关联表。 您的ORM文件会像:


Application\Bundle\Entity\nameofAssociationTable: 
    type: entity 
    table: nameofAssociationTable 
    fields: 
    id: 
     type: integer 
     id: true 
     generator: 
     strategy: AUTO 
    manyToOne: 
user: 
     targetEntity: Application\Bundle\Entity\User 
     cascade: { } 
     mappedBy: null 
     inversedBy: null 
     joinColumns: 
     user_id: 
      referencedColumnName: id 
     orphanRemoval: false 
portfolio: 
     targetEntity: Application\PLibBundle\Entity\Portfolio 
     cascade: 
     - persist 
     - remove 
     mappedBy: null 
     inversedBy: null 
     joinColumns: 
     portfolio_id: 
      referencedColumnName: id 
     orphanRemoval: false 
    lifecycleCallbacks: { } 

同样需要添加关系到多对一的关系。谢谢。

相关问题