我在我的应用程序中使用Symfony2并使用Doctrine .orm.yml文件进行关系映射。
我有三个实体如下:
包含id(整数主键),user_name(varchar)
投资组合实体,包含id(整数主键),name(varchar),user_id(来自用户的FK,用于识别创建投资组合的人)
包含id(整数主键),progress_text(varchar)
我的问题是我不知道如何设置三个实体之间的多对多关系,即投资组合,用户和进度。
我想以某种方式设置关系,以便由于此关系而创建的新表包含以下字段:
在上面的列表created_at中,updated_at和type是我用于某些业务规则目的的字段。
请一些人帮我写他们的.orm.yml文件。据我所知,Symfony2中有内置命令可生成实体及其对应的.orm.yml文件。但我不知道如何在相应的文件中编写上述必需的关系。
答案 0 :(得分: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: { }
同样,您需要将关系添加到manytoOne关系中。感谢。