簡體   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