多个账户类型?

问题描述:

我目前使用Symfony2和原则。我正在创建一个“创建账户”页面。网页上会有两种不同类型的帐户可供使用,一种用于normal-users,另一种用于companies多个账户类型?

我有一个名为Account的实体(表),此表包含username,passwordsalt列。

如果有公司登录我想从company -table获取公司信息,如果登录normal-user我希望从user -table获取信息。

我一直在想有一个名为usertype列,它告诉我它是什么类型的,那么如果用户类型是company获取公司信息的实体,如果它是一个user检索用户信息实体(对应于账户的id)。

这是解决此问题的好方法吗?或者我应该有两张不同的桌子? AccountUser和AccountCompany?

如果公司表中有许多列不存在于用户表中,反之亦然,解决问题的最佳方法是使用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