我有一個名爲forums
與後續的場結構表:主義態關聯
OBJECT_TYPE - > [組|頁面|錦標賽| etc ..](可能值,每個元素都有自己的表格)
object_id - > [group's id |頁面的ID |錦標賽ID |等等。(ID OBJECT_TYPE)
id_forum,4.name等
然後,我有以下表格:Group
,Page
,Tournament
等。
是它這可能與教條實現嗎?
我有一個名爲forums
與後續的場結構表:主義態關聯
OBJECT_TYPE - > [組|頁面|錦標賽| etc ..](可能值,每個元素都有自己的表格)
object_id - > [group's id |頁面的ID |錦標賽ID |等等。(ID OBJECT_TYPE)
id_forum,4.name等
然後,我有以下表格:Group
,Page
,Tournament
等。
是它這可能與教條實現嗎?
我認爲你正在尋找的東西可以通過繼承完成。
檢查http://www.doctrine-project.org/docs/orm/2.0/en/reference/inheritance-mapping.html的詳細說明。
我有一個類似的問題。我已經發布了一個關於如何在this post的Doctrine 2.2中實現多態關聯的完整示例。
這應該是一個評論,但我的聲譽太低,對不起。
不幸的是,多態關聯與CTI(類表繼承)不完全相同:CTI要求所有子類具有相同標識的父表。
CTI可能在大多數情況下工作,但如果您想在已有自己的ID和/或可能具有不同ID類型的現有實體之間創建多態關聯,則可能會出現問題。
除了CTI需要在父表中爲每個子類創建一個對多態關聯無用的記錄。多態關聯不應該要求任何表,它應該只用(id,type)條件連接現有的表。爲了簡單/性能的原因,我認爲Doctrine需要父表。
當CTI不是解決方案時,我建議模擬Repository級別的多態關聯,即創建一個具有$ type屬性的抽象Repository,並實現一個可以自動將當前查詢連接到目標表的polymorphicJoin方法id /類型條件。然後用您的子類Repositories擴展抽象的Repository,並在find/select方法需要時調用polymorphicJoin方法。
如果這種關聯是在教義中實現的,那將是非常棒的。