Как применить проверку UniqueEntity к суперклассу - PullRequest
4 голосов
/ 23 января 2012

При определении абстрактного суперкласса с несколькими реализациями я не могу заставить работать проверку UniqueEntity.

Например, при создании AbstractUser, имеющего поле электронной почты и FacebookUser / TwitterUser, проверка UniqueEntity является только подклассом.Не родительский.

Есть идеи, как применить проверку Уникальности на верхнем уровне?

РЕДАКТИРОВАТЬ: Я использую наследование таблицы joined со столбцом дискриминатора.См. документацию к доктрине.

Ответы [ 2 ]

1 голос
/ 14 декабря 2017

Вы можете определить параметр entityClass в конфигурации ограничений с помощью суперкласса следующим образом:

/**
 * @UniqueEntity(fields={"email"}, entityClass=User::class)
 */
1 голос
/ 27 мая 2013

Вам может потребоваться написать собственное ограничение проверки для проверки уникальности в этом случае.

Логически неясно, как в этом случае должно применяться ограничение UniqueEntity.Должны ли все расширяющие классы проверяться на уникальность свойства или только на текущий используемый класс?

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


Что касается комментариев к вопросу:

FOSUserBundle делаетне включает ограничение UniqueEntity в config / validaton.xml .

... но его можно найти для orm, mongodb, couchdb и propel, т.е. в config / orm / orm.xml .

FOSUserBundle использует @MappedSuperClass вместо наследования объединенной таблицы.

...