假设我有三个实体:页面,产品和媒体。
好吧,我想有这个问题:
Page <-(many-to-many)-> Media
Product <-(many-to-many)-> Media
使用通用方法解决这个问题,会产生两个看起来非常相似的表。
我的问题是:我可以使用Doctrine为这两种关系使用单个表吗?
我只需要一种建议新列的方法,该列可以指示特定行上的媒体对应物是产品还是页面。
答案 0 :(得分:2)
答案是否。关系表N:N必须具有唯一的表名。 但是......你可以创造一种这样的结构:
Page <--1:N--> MyGreatJoinTable <--N:1--> Media
Product <--1:N--> MyGreatJoinTable <--N:1--> Media
您不需要描述引用,因为它引用了不同的表,但如果您需要,则可以执行此操作。
当然,MyGreatJoinTable至少有三列:
- PageId
- ProductId
- MediaId