编程语言
首页 > 编程语言> > php – 如何扩展FOSUserBundle的用户实体?

php – 如何扩展FOSUserBundle的用户实体?

作者:互联网

我有我的UserBundle扩展了FOSUserBundle并且工作正常.但现在,我想创建具有différents属性的多个用户实体.
但问题是当我创建我的用户实体时,他扩展了我的主要用户实体,如下所示:

class User extends BaseUser
{
    protected $id;
    // The main user class who extends FOSUser entity
}

class UserB extends User
{
    //
}

当我这样做时,我有一个错误:`

Access level to MyApp\UserBundle\Entity\UserB::$id must be protected (as in class MyApp\UserBundle\Entity\User).

当我在UserB实体中创建受保护的ID时,我有:

PHP Fatal error: Cannot redeclare MyApp\UserBundle\Entity\UserB::$id.

并且,为了完成,我无法删除我的用户实体中的id少返回一个Doctrine错误:

[Doctrine\ORM\Mapping\MappingException]
No identifier/primary key specified for Entity ‘MTS\UserBundle\Entity\User’. Every Entity must have an identifier/primary key.

有人可以帮帮我吗?

编辑:问题解决了.我的代码:

/**
 * 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
}

解决方法:

你的问题似乎是缺乏注释.

通过从我的工作代码中删除它,我能够复制您的’Every Entity必须有标识符/主键’错误消息:

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */

我的作品:

 /**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

标签:doctrine-orm,php,symfony,fosuserbundle
来源: https://codeday.me/bug/20190902/1792728.html