Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多账户类型?_Php_Database_Symfony_Doctrine Orm_Class Table Inheritance - Fatal编程技术网

Php 多账户类型?

Php 多账户类型?,php,database,symfony,doctrine-orm,class-table-inheritance,Php,Database,Symfony,Doctrine Orm,Class Table Inheritance,我目前正在使用Symfony2和doctrine。我正在做一个“创建帐户”页面。页面上将提供两种不同类型的帐户,一种用于普通用户,另一种用于公司 我有一个名为Account的实体(表)。这个表包含username、password和salt列 如果公司登录,我希望从公司-表获得公司信息,如果普通用户登录,我希望从用户-表获得信息 我一直在考虑让一个名为usertype的列告诉我它是什么类型,然后如果usertype是company检索公司信息实体,如果它是user检索用户信息实体(对应于帐户的i

我目前正在使用Symfony2和doctrine。我正在做一个“创建帐户”页面。页面上将提供两种不同类型的帐户,一种用于
普通用户
,另一种用于
公司

我有一个名为
Account
的实体(表)。这个表包含
username
password
salt

如果公司登录,我希望从
公司
-表获得公司信息,如果
普通用户
登录,我希望从
用户
-表获得信息

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


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

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

根据上面的链接,您应该有如下代码:

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
{
    // ...
}

识别码是正确的选择。谢谢你,迈克尔!回答得好!