我正在使用symfony框架在PHP中開發,但是這個問題更廣泛地適用於非symfony和非PHP開發人員。 (對於symfony開發人員,我使用單表繼承映射使用Doctrine ORM將子類映射到數據庫,BasePerson擴展了FOSUserBundle,然後進一步擴展了兩個子類。)應該將用戶類擴展爲多個用戶子類
「BasePerson」擴展了原始用戶類進一步擴展爲兩個獨立的子類:攝影師,PhotoSubject。
擁有子類是一個很好的邏輯分離,但是當我有一個也是PhotoSubject的攝影師時,問題就出現了。他們將共享相同的電子郵件地址,但使用不同的用戶名(在用戶類中)。
但是現在我有兩個對象爲同一個人(同一個用戶):一個PhotoSubject和一個攝影師,都有不同的用戶名和可能不同的密碼等等,這在Doctrine中顯然是不可能的 - 他們需要被存儲爲有不同用戶名的兩個單獨的數據庫記錄。對同一個用戶有兩個不同的登錄名對我來說似乎是一個設計問題。
任何人都可以提出這個問題的正確設計?我應該不使用繼承來避免這個問題,而是有一個沒有擴展的單體「BasePerson」類。我應該在用戶登錄時以某種方式檢查數據庫中是否有相同電子郵件地址的另一個「人員」?或者有另一種解決這個問題的方法嗎?
7小時前提出了一個類似的問題,它提供了一些有用的信息: http://stackoverflow.com/questions/37306930/doctrine-inheritance-strategy-when-two-different-subclasses-extend-the-same -enti –