Symfony 2 - 如何设置具有多对多关系的三个实体之间的关系
Symfony 2 - How to set relationship between three entities having many to many relationship among them
我正在为我的应用程序使用 Symfony2,并使用 Doctrine .orm.yml 文件进行关系映射。
我有如下三个实体:
包含id(整数主键)的用户实体,user_name(varchar)
包含 id(整数主键)、名称(varchar)的投资组合实体,user_id(来自用户的 FK,用于识别投资组合的创建者)
progress entity which contains id(integer primary key), progress_text(varchar)
我的问题是我不知道如何设置三个实体之间的多对多关系,即 Portfolio、User 和 Progress。
我想以某种方式设置关系,使得由此关系创建的新 table 包含以下字段:
- user_id
- portfolio_id
- progress_id
- created_at
- updated_at
- 类型
在上面的列表 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: { }
同样,您需要将关系添加到多对一关系中。谢谢
我正在为我的应用程序使用 Symfony2,并使用 Doctrine .orm.yml 文件进行关系映射。
我有如下三个实体:
包含id(整数主键)的用户实体,user_name(varchar)
包含 id(整数主键)、名称(varchar)的投资组合实体,user_id(来自用户的 FK,用于识别投资组合的创建者)
progress entity which contains id(integer primary key), progress_text(varchar)
我的问题是我不知道如何设置三个实体之间的多对多关系,即 Portfolio、User 和 Progress。
我想以某种方式设置关系,使得由此关系创建的新 table 包含以下字段:
- user_id
- portfolio_id
- progress_id
- created_at
- updated_at
- 类型
在上面的列表 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: { }
同样,您需要将关系添加到多对一关系中。谢谢