2014-02-04 2 views
0

Я установил FOS UserBundle.FOS Userbundle - объявить собственное поле userID

Проблема: поле «id» моей пользовательской таблицы называется userID.

Я не могу изменить его bc других таблиц и программирования, зависящих от поля userID.

Если я пытаюсь войти в систему, я получаю сообщение об ошибке:

Unrecognized field: id 

Проблема, кажется, заключается в вызове для поля ID:

UserManager ->findUserBy (array('id' => 1)) 

Могу ли я каким-то образом переопределить FOS UserBundle так, чтобы метод findby() передает id в userID? Или я понимаю, что это совершенно неправильно, и нужно сделать это по-другому?

ответ

0

Имена полей в объекте не обязательно должны совпадать с именами полей в вашей таблице sql. Таким образом, вы можете использовать «id» в качестве поля в своей доктрине doctrine и сопоставить его с полем «userID» в вашей таблице sql.

Если вы используете Doctrine аннотаций для объекта пользователя, как в документации FOSUserBundle, это может сделать трюк:

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

Я не проверял это и есть шанс, что он не работает , потому что поле id всегда немного «особенное», но, возможно, стоит попробовать.

+0

, что это отличная идея :) к сожалению, не подходит - FOS UserBundle до сих пор не может найти поле идентификатора. :/ –

0

Создайте свой собственный UseBundle и добавьте в него объект, что-то вроде этого.

<?php 

    namespace Demo\UserBundle\Entity; 

    use FOS\UserBundle\Model\User as BaseUser; 
    use Doctrine\ORM\Mapping as ORM; 
    use Doctrine\Common\Collections\ArrayCollection; 

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

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

    /** @ORM\Column(name="first_name", type="string", length=255, nullable=true) */ 
    protected $first_name; 
    .................. 

Также см этого учебное пособия http://knpuniversity.com/screencast/fosuserbundle-ftw

+0

У меня нет поля $ id - мое поле называется $ userID - я могу добавить поле id в таблицу, но это поле не будет иметь идентификатор пользователя. Я не создаю его с нуля - база данных уже на месте, и многие другие модули зависят от поля userID, поэтому я не могу просто изменить это. –

0

Ваше имя столбец "USER_ID" может быть чувствительны к регистру.

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

    } 
Смежные вопросы