[英]Doctrine2 OneToMany with multiple Entities
我有三种用户,每个用户都有一些FiscalData
并链接到UserCredential
条目。
其中翻译为:
UserX(X = 1,2,3)有两个FK引用
FiscalData
和UserCredential
表。
使用Doctrine2,阅读文档http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/association-mapping.html ,我认为需要MappedSuperClass模式。
我还阅读了以下问题:
Doctrine2,Symfony2 - oneToOne有多个实体?
但在文档中明确指出
映射的超类不能是实体,它不是可查询的,并且由映射的超类定义的持久关系必须是单向的(仅具有拥有方)。 这意味着根本不可能在映射的超类上进行一对多关联。 此外,只有当映射的超类目前仅在一个实体中使用时,才能实现多对多关联。 为了进一步支持继承,必须使用单个或连接表继承功能。
那么,如何实现我想要实现的目标,这是UserX和FiscalData
/ UserCredential
之间的双向关系 ? (通过Doctrine我可以获得UserCredential并检查它与哪个配置文件关联)
任何完整的最小代码示例显示如何强制执行我正在寻找的关系 (而不仅仅是文档中显示的MappedSuperClass继承将受到高度赞赏。
使用抽象实体而不是MappedSuperClass。 单表通常是要走的路,除非你确定你想要类/表。
<?php
/**
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({
* "mentor" = "Mentor",
* "protege" = "Protege"
* })
*/
abstract class User { ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.