如何扩展FOSUserBundle的用户实体?
我有我的UserBundle扩展了FOSUserBundle并且工作正常。 但是现在,我想创建具有différents属性的多个用户实体。 但问题是,当我创建我的用户Entity扩展我的主用户实体像这样:
class User extends BaseUser
{
protected $id;
// The main user class who extends FOSUser entity
}
class UserB extends User
{
//
}
当我这样做时,我有一个错误:`
MyApp UserBundle Entity UserB :: $ id的访问级别必须受到保护(如在类MyApp UserBundle Entity User中)。
当我在我的UserB实体中创建一个受保护的ID时,我有这样的:
PHP致命错误:无法重新声明MyApp UserBundle Entity UserB :: $ id。
完成后,我无法删除我的User实体中的id,因此返回一个Doctrine错误:
[学说 ORM 映射 MappingException]
没有为实体“MTS UserBundle Entity User”指定标识符/主键。 每个实体必须有一个标识符/主键。
有人可以帮助我吗?
编辑:问题解决了。 我的代码:
/**
* MTSUserBundleEntityUser
*
* @ORMEntity
* @ORMInheritanceType("SINGLE_TABLE")
* @ORMDiscriminatorColumn(name="type", type="string")
* @ORMDiscriminatorMap({"userfb" = "UserFB"})
*/
abstract class User extends BaseUser
{
/**
* @var integer $id
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string $type
*/
private $type;
}
/**
* @ORMTable()
* @ORMEntity()
*/
class UserB extends User
{
// My variables
}
你的问题似乎缺乏注解。
我可以通过从我的工作代码中删除这个来复制你的'每个实体都必须有一个标识符/主键'的错误消息:
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
我的作品:
/**
* @ORMEntity
* @ORMTable(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
链接地址: http://www.djcxy.com/p/69375.html
上一篇: How extends User entity of FOSUserBundle?
下一篇: What is the advantage of using abstract classes instead of traits?