2014-06-06 41 views
0

我目前在我的組件中有一個User Doctrine實體和模型。我有一個用戶捆綁,與用戶,CRUD等工作的基礎知識。擴展一個Doctrine實體以在Symfony2中添加額外的關聯映射

我正在開發一個資源分配包,我想擴展我的用戶實體添加額外的關聯而不更改原始用戶。然後ResourceAllocation Bundle將完全獨立於User Bundle。

我已經設置了BaseUser的映射超類,它是User和SkilledUser(來自Resource Allocation Bundle的一個)。然而,這試圖爲User和SkilledUser創建一個不希望的表。

用戶和熟練的用戶可能是同一個用戶,所以單表繼承是不會工作的。

實際上,最終的結果應該是一個表的用戶。

我們在YAML工作,如果答案能保持這種方法,那將是巨大的。

+0

因此,如何這樣的擴展它'類SkilledUser擴展用戶{}'? – bartek

+0

那麼用戶在那種情況下也必須是映射超類嗎? – Quanano

回答

0

「實際上,最終結果應該是用戶所在的一個表格。」

實現此目的的唯一方法是使用STI(單表繼承)。

「用戶和熟練的用戶可能是同一個用戶,所以,單表繼承不起作用。」

我不明白這是怎麼回事......你仍然可以創建用戶和SkilledUser之間的關聯,如果這是你的意思。

見參考文獻:http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html

+0

STI不是使用鑑別器列的想法,例如工作者擴展人員,經理擴展人員會導致一個專欄中標記工人和經理的原則不同。這與僅將一些關聯添加到人員以在一個包中使用而不影響原始包相同。 – Quanano

+0

正確。就我所知,您不能同時將單個行同時作爲用戶和SkilledUser。我也不確定你爲什麼想要。爲什麼不看FOSUserBundle,看看他們如何讓你用自己的UserBundle的用戶實體替換?順便說一下,我認爲構圖可能適合你想要做的更好的事情(例如,對於某些用戶,您可以與SkilledUser進行關聯,從而有效地允許他們既可以是用戶,也可以是具有SkilledUser關聯的用戶 –

+0

我試圖不必爲原來的用戶添加配置,到目前爲止我所做的只是通過一個單獨的表關聯一個用戶和他們的技能,然後通過在用戶ID上進行分組來獲得用戶,這並不理想,因爲我必須從userSkills實體獲取用戶,而不是直接能夠執行$ user-> getSkills();相反,它必須是$ userSkill-> getUser() - > getSkills()。 – Quanano

相關問題