Symfony 2 -如何设置具有多对多关系的三个实体之间的关系


Symfony 2 - How to set relationship between three entities having many to many relationship among them

我使用Symfony2为我的应用程序和使用Doctrine .orm。关系映射的Yml文件

我有三个实体如下:

  1. 包含id(整数主键),user_name(varchar)的用户实体

  2. 包含id(整型主键)、name(varchar)、user_id(标识创建组合的用户的FK)的投资组合实体

  3. 包含id(整数主键),progress_text(varchar)的进度实体

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

我想以这样一种方式设置一个关系,即作为这个关系的结果创建的新表包含以下字段:

  1. user_id
  2. portfolio_id
  3. progress_id
  4. created_at
  5. updated_at

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

请有人帮我写他们的。orm。yml文件。我知道Symfony2中有生成实体及其相应的。orm的内置命令。yml文件。但是我不知道如何在相应的文件中编写上述所需的关系

您需要为这个关系创建单独的关联表。您的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: {  }
 

同样,您需要将关系添加到manytoOne关系中。谢谢。