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