1

我有三種用戶,每個用戶都有一些FiscalData並鏈接到UserCredential條目。Doctrine2具有多個實體的OneToMany

在這轉化:

用戶X(X = 1,2,3)具有兩個FKS參照FiscalDataUserCredential表。

使用Doctrine2,閱讀文檔http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/association-mapping.html,我認爲需要MappedSuperClass模式。

我也看到了以下問題:

Doctrine 2 - One-To-Many with multiple Entities

Many-To-One with multiple target entities

Doctrine2, Symfony2 - oneToOne with multiple entities?

但在文檔中明確指出,

映射超不能一個實體,它不是曲由映射超類定義的可持續關係必須是單向的(只有擁有一方)。這意味着一對多關聯在映射超類上根本不可能。此外,多對多關聯只有在映射的超類目前僅在一個實體中使用時纔有可能。爲了進一步支持繼承,必須使用單個或連接的表繼承功能。

那麼,如何實現我想要實現的,這是用戶X和FiscalData/UserCredential之間的雙向關係? (使FE通過主義,我可以得到一個UserCredential和檢查什麼樣的配置文件已關聯)

任何完整最少的代碼示例展示瞭如何強制執行的關係我正在尋找(並不僅僅是MappedSuperClass繼承在文檔中表示將高度讚賞。

+0

爲了誰downvoted ,請說出你的想法 –

+0

正如你已經在我們注意到,文檔建議使用單個或連接的表繼承來進一步支持繼承。你排除這些解決方案嗎? – marc

+0

您建議UserX使用STI/JTI從用戶基類繼承,並在用戶基類和FiscalData/UserCredential之間創建OtM/MtO關係? –

回答

0

使用一個抽象的實體,而不是MappedSuperClass。單表通常是去,除非你確定你想要類/表的方式。

<?php 
/** 
* @ORM\Entity 
* @ORM\InheritanceType("SINGLE_TABLE") 
* @ORM\DiscriminatorColumn(name="discr", type="string") 
* @ORM\DiscriminatorMap({ 
*  "mentor" = "Mentor", 
*  "protege" = "Protege" 
* }) 
*/ 
abstract class User { ... }