Как переписать сущность в пакете Symfony2

Я использую FOSUserBundle для Symfony2 , и мне нужно иметь возможность регистрировать пользователя, не проверяя, является ли электронное письмо уникальным , мне просто нужен действительный адрес электронной почты, поэтому многие пользователи могут иметь один и тот же адрес электронной почты (я знаю, что это странно, но мне нужно Это).

У меня есть объект «Пользователь» в пакете, который расширяет FOSUserBundle , возможно ли перезаписать определение столбца emailCanonical, чтобы устранить уникальный параметр и удалить проверку из FormType?

Я использую аннотацию для отображения моих объектов и YML для проверки моих форм.

У меня была аналогичная проблема несколько недель назад. Единственным решением является расширение модели вместо объекта:

use FOS\UserBundle\Model\User as BaseUser; class User extends BaseUser 

Недостатком является то, что вы также должны копировать все из объекта пользователя FOS в свой пользовательский объект. С другой стороны, вы можете настроить функциональность в соответствии с вашими потребностями.

Я нашел что-то, это частично работа , не жизнеспособное решение.

Проблема состоит из двух частей: формы и модели.

Для формы: Чтобы перезаписать уникальное ограничение формы регистрации FOSUserBundle, вы можете изменить группы проверки регистрации в app / config / config.yml:

 fos_user: registration: validation_groups: [YourValidationGroup] 

Для модели: я не нашел хорошего решения без перезаписи всей модели. Doctrine2 явно сообщает, что вы не можете перезаписать свойство сопоставленного класса. Поэтому я сделал миграцию, которая удаляет уникальный индекс ограничений с помощью DoctrineMigrationBundle … Я не горжусь этим решением, но он работает, и это позволяет мне сохранять дубликат электронной почты.

Если у вас есть лучшее решение для модели, не стесняйтесь!