Сделать ограничение UniqueEntity Doctrine нечувствительным к регистру - PullRequest
0 голосов
/ 20 февраля 2019

Есть ли способ настроить UniqueEntity для обработки foo и Foo как дубликатов?

Вариант использования: у меня есть @UniqueEntity("email") на моем пользовательском объекте, так как я 'м, используя адрес электронной почты в качестве имени пользователя.Согласно https://stackoverflow.com/a/9808332/1668200 локальная часть адреса электронной почты в теории чувствительна к регистру, но на практике нечувствительна к регистру.

Я, безусловно, мог бы преобразовать ее в строчные в setEmail() (как предложено вhttps://stackoverflow.com/a/31663365/1668200). Недостатки:

  • Может сбить с толку пользователей (так как их адрес электронной почты будет «изменен»)
  • В комментарии к ответу выше сказано:

    Это не очень хорошая идея, так как есть небольшая вероятность, что она не будет доставлена.

Поэтому я бы предпочел отклонить регистрацию пользователя Foo@example.com (еслиfoo@example.com уже присутствует), затем преобразуйте все адреса пользователей в нижний регистр.

1 Ответ

0 голосов
/ 20 февраля 2019

На основании этого UniqueEntity :

Тип репозитория: строка default: findBy ()

Имя метода репозитория, используемого для выполнения запросаопределить уникальность.Если оставить пустым, будет использован метод findBy ().Этот метод должен возвращать счетный результат.

Вы можете создать функцию в хранилище, чтобы найти, существует ли это письмо, применяя UPPER () в sql.

...