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

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

好吧,我想有这个问题:

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
点赞