2013-10-02 70 views
1

我目前使用Symfony2和原則。我正在創建一個「創建賬戶」頁面。網頁上會有兩種不同類型的帳戶可供使用,一種用於normal-users,另一種用於companies多個賬戶類型?

我有一個名爲Account的實體(表),此表包含username,passwordsalt列。

如果有公司登錄我想從company -table獲取公司信息,如果登錄normal-user我希望從user -table獲取信息。

我一直在想有一個名爲usertype列,它告訴我它是什麼類型的,那麼如果用戶類型是company獲取公司信息的實體,如果它是一個user檢索用戶信息實體(對應於賬戶的id)。

這是解決此問題的好方法嗎?或者我應該有兩張不同的桌子? AccountUser和AccountCompany?

回答

2

如果公司表中有許多列不存在於用戶表中,反之亦然,解決問題的最佳方法是使用class-table inheritance,這將創建三個表:帳戶,用戶,公司。用戶和公司必須是帳戶實體的子類。

根據上面的鏈接,你應該有這樣的代碼:

namespace MyProject\Model; 

/** 
* @Entity 
* @InheritanceType("JOINED") 
* @DiscriminatorColumn(name="usertype", type="string") 
* @DiscriminatorMap({"user" = "User", "company" = "Company"}) 
*/ 
class Account 
{ 
    // ... 
} 

/** @Entity */ 
class User extends Account 
{ 
    // ... 
} 

/** @Entity */ 
class Company extends Account 
{ 
    // ... 
} 
+0

'DiscriminatiorMaps'是要走的路。 – ferdynator

+0

謝謝Michael!很好的回答! – Asbestos