繁体   English   中英

Doctrine2 OneToMany有多个实体

[英]Doctrine2 OneToMany with multiple Entities

我有三种用户,每个用户都有一些FiscalData并链接到UserCredential条目。

其中翻译为:

UserX(X = 1,2,3)有两个FK引用FiscalDataUserCredential表。

使用Doctrine2,阅读文档http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/association-mapping.html ,我认为需要MappedSuperClass模式。

我还阅读了以下问题:

学说2 - 具有多个实体的一对多

具有多个目标实体的多对一

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM