Symfony2 FOSUserBundle更改fos_user id类型

Symfony2 FOSUserBundle更改fos_user id类型

问题描述:

I have problem. I have to change type of fos_user.id to bigint. But I don't know how to do it. I have overriden the FOSUserBundle and I have tried code below, it's works but not for id.:

/**
 * @ORM\Entity
 * @ORM\Table(name="sf_guard_user")
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="id", column=@ORM\Column(type="bigint", name="id")),
 *      @ORM\AttributeOverride(name="email", column=@ORM\Column(type="string", name="email_address", length=255)),
 * })
 */
class User extends BaseUser implements EncoderAwareInterface {
 //...
}

我有问题。 我必须将fos_user.id的类型更改为bigint。 但我不知道该怎么做。 我已经覆盖了FOSUserBundle并且我已经尝试了下面的代码,它可以工作,但不能用于id.:

n.n
/**
 * @ORM \ Entity 
 * @ORM \ 表(name =“sf_guard_user”)
 * @ORM \ AttributeOverrides({
 * @ORM \ AttributeOverride(name =“id”,column = @ ORM \ Column(type =“bigint”,name =“id”)  ),
 * @ORM \ AttributeOverride(name =“email”,column = @ ORM \ Column(type =“string”,name =“email_address”,length = 255)),
 *})
 * /  
class用户扩展BaseUser实现EncoderAwareInterface {
 //...
}
div>

You don't need to override id. It should be defined in class that extends FOS\UserBundle\Model\User. Just define it inside your User class. Like this:

/**
 * @ORM\Entity
 * @ORM\Table(name="sf_guard_user")
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="email", column=@ORM\Column(type="string", name="email_address", length=255)),
 * })
 */
class User extends BaseUser implements EncoderAwareInterface {
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="bigint")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

 //...
}