symfony – 如何在超类上应用UniqueEntity验证

在定义具有多个实现的抽象超类时,我无法使UniqueEntity检查起作用.

例如,在创建具有电子邮件字段和FacebookUser / TwitterUser的AbstractUser时,UniqueEntity检查仅是子类.不是父母.

有关如何在顶层应用唯一检查的任何想法?

编辑:我正在使用带有鉴别器列的连接表继承.见doctrine documentation.

最佳答案 在这种情况下,您可能需要编写自己的验证约束来检查唯一性.

从逻辑上讲,不清楚UniqueEntity约束在这种情况下应该如何应用.
是否应检查所有扩展类的属性的唯一性或仅检查当前使用的类?

由于UniqueEntity约束在表中查找属性的唯一性,因此默认行为不包含第二个变体.
因此,您不能对当前使用单表继承扩展的类使用约束.

关于问题评论:

FOSUserBundle在config/validaton.xml中不包含UniqueEntity约束.

…但是可以找到orm,mongodb,couchdb和推进,即config/orm/orm.xml.

FOSUserBundle使用@MappedSuperClass而不是连接表继承.

点赞