Doctrine - 使用相同的表来表示多个(多对多)关系

时间:2013-09-19 21:23:22

标签: symfony doctrine-orm

假设我有三个实体:页面,产品和媒体。

好吧,我想有这个问题:

Page <-(many-to-many)-> Media

Product <-(many-to-many)-> Media

使用通用方法解决这个问题,会产生两个看起来非常相似的表。

我的问题是:我可以使用Doctrine为这两种关系使用单个表吗?

我只需要一种建议新列的方法,该列可以指示特定行上的媒体对应物是产品还是页面。

1 个答案:

答案 0 :(得分:2)

答案是否。关系表N:N必须具有唯一的表名。 但是......你可以创造一种这样的结构:

Page <--1:N--> MyGreatJoinTable <--N:1--> Media
Product <--1:N--> MyGreatJoinTable <--N:1--> Media

您不需要描述引用,因为它引用了不同的表,但如果您需要,则可以执行此操作。

当然,MyGreatJoinTable至少有三列:

- PageId
- ProductId
- MediaId