我有我的 UserBundle,它扩展了 FOSUserBundle 并且工作正常。但是现在,我想创建具有不同属性的多个用户实体。但问题是当我创建像这样扩展我的主要用户实体的用户实体时:
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。
最后,我不能删除我的用户实体中的 id 少返回一个 Doctrine 错误:
[Doctrine\ORM\Mapping\MappingException]
没有为实体“MTS\UserBundle\Entity\User”指定标识符/主键。每个实体都必须有一个标识符/主键。
有人可以帮助我吗?
编辑:问题解决了。我的代码:
/**
* MTS\UserBundle\Entity\User
*
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"userfb" = "UserFB"})
*/
abstract class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string $type
*/
private $type;
}
/**
* @ORM\Table()
* @ORM\Entity()
*/
class UserB extends User
{
// My variables
}