在定义具有多个实现的抽象父类(super class)时,我无法让 UniqueEntity 检查工作。

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

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

编辑:我使用带有鉴别器列的 joined 表继承。见 doctrine documentation.

最佳答案

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

在这种情况下,UniqueEntity 约束将如何应用在逻辑上尚不清楚。
应检查所有扩展类的属性的唯一性还是仅检查当前使用的类?

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

关于问题评论:

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

...但它可以在 orm、mongodb、couchdb 和 propel 中找到,即在 config/orm/orm.xml 中。

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

关于symfony - 如何在父类(super class)上应用 UniqueEntity 验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8976862/

10-11 05:19