多个账户类型?
问题描述:
我目前使用Symfony2和原则。我正在创建一个“创建账户”页面。网页上会有两种不同类型的帐户可供使用,一种用于normal-users
,另一种用于companies
。多个账户类型?
我有一个名为Account
的实体(表),此表包含username
,password
和salt
列。
如果有公司登录我想从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
{
// ...
}
'DiscriminatiorMaps'是要走的路。 – ferdynator
谢谢Michael!很好的回答! – Asbestos