Symfony2: FOS_Userbundle Дублирование определения при обновлении схемы БД? - PullRequest
9 голосов
/ 10 ноября 2011

Я пытаюсь использовать FOS_UserBundle для управления моими пользователями, но каждый раз, когда я пытаюсь обновить БД

php app/console doctrine:schema:update --force

, я получаю следующую ошибку:

Дублирующее определение столбца 'имя пользователя 'на объекте в поле или поле столбца дискриминатораfos user bundle

Это также происходит с «электронной почтой», когда я закомментирую имя пользователя.

Мой класс пользователя на самом деле очень прост:

namespace My\MyBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{

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

/**
* @ORM\Column(type="string", length="100") 
*/
protected $username;

/**
* @ORM\Column(type="string", length="100") 
*/
protected $name;

/**
* @ORM\Column(type="string", length="100")
*/
protected $firstname;

/**
* @ORM\Column(type="string", length="150")
*/
protected $email;

}

Ячто-то упустил?

Ответы [ 3 ]

13 голосов
/ 10 ноября 2011

Ваш My\MyBundle\Entity\User расширяет FOS\UserBundle\Entity\User, что, в свою очередь, расширяет FOS\UserBundle\Model\User, в котором уже есть поле $username. Он также имеет поле $email. Поэтому вам просто нужно удалить поля $username и $email из вашего класса.

10 голосов
/ 19 декабря 2011

Расширение с помощью FOS \ UserBundle \ Model \ User, а не FOS \ UserBundle \ Entity \ User class.Вы всегда должны расширять с помощью Model, а не Entity.

4 голосов
/ 08 марта 2017

Для меня это сработало путем удаления аннотации столбца.

/**
 * @ORM\Column  --> remove this line!
 */
protected $password;

Вы можете использовать @ ORM \ AttributeOverrides для класса User или BaseUser для переопределения аннотаций из BaseUser. Пример:

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 * @AttributeOverrides({
 *      @AttributeOverride(name="password",
 *          column=@Column(
 *              nullable = false,
 *              unique   = true,
 *              length   = 123
 *          )
 *      )
 * })
 class User extends BaseUser
 {
 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...