1

我目前正在使用 Symfony2 和学说。我正在创建一个“创建帐户”页面。页面上将有 2 种不同类型的帐户可用,normal-users一种用于companies.

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

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

我一直在考虑有一个名为的列usertype告诉我它是什么类型,然后如果用户类型是company检索公司信息实体,如果它是user检索用户信息实体(对应于id帐户) .

这是解决这个问题的好方法吗?还是我应该有 2 张不同的桌子?AccountUser 和 AccountCompany?

4

1 回答 1

2

如果 Company 表中有很多列在 User 表中不存在,反之亦然,那么解决问题的最佳方法是使用类表继承,这将创建三个表:Account、User、Company。User 和 Company 必须是 Account 实体的子类。

根据上面的链接,你应该有这样的代码:

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
{
    // ...
}
于 2013-10-02T07:01:21.277 回答