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(整数主键)、名称(varchar)的投资组合实体,user_id(来自用户的 FK,用于识别投资组合的创建者)

  3. progress entity which contains id(integer primary key), progress_text(varchar)

我的问题是我不知道如何设置三个实体之间的多对多关系,即 Portfolio、User 和 Progress。

我想以某种方式设置关系,使得由此关系创建的新 table 包含以下字段:

  1. user_id
  2. portfolio_id
  3. progress_id
  4. created_at
  5. updated_at
  6. 类型

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

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

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

同样,您需要将关系添加到多对一关系中。谢谢