symfony - Doctrine - 对多个(多对多)关系使用同一个表

标签 symfony doctrine-orm

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

好吧,我想要这样的现实:

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

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

使用常见的方法来解决这个问题,会得到两个看起来非常相似的表。

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

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

最佳答案

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

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

您不需要描述引用,因为它指的是不同的表,但如果您愿意,您可以这样做。

当然 MyGreatJoinTable 至少会有三列:
- PageId
- ProductId
- MediaId

关于symfony - Doctrine - 对多个(多对多)关系使用同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905152/

相关文章:

php - 教义2 : Lazy loading fails and I have to re-initialize the class

php - Symfony 5 $form->isSubmitted() 为文件上传返回 False

Symfony2/路由/使用参数作为 Controller 或操作名称

php - Composer : PHP Fatal error: Out of memory || Setting memory_limit doesn't work

php - TINYINT 在 doctrine/symfony2 中错误地转换为 NULL 而不是 bool 值

php - Doctrine ODM如何随机选择?

css - Symfony 2 Assets :dump UglifyCss causes [Symfony\Component\Process\Exception\RuntimeException] The process has been signaled with signal "5"

symfony - 根据日期和时间对 Symfony 中的对象数组进行排序

php - 无法使 ManyToOne 工作

symfony - 在运行 Symfony 迁移时添加数据