使Doctrine的UniqueEntity约束不区分大小写

时间:2019-02-20 17:08:08

标签: php symfony doctrine

是否可以将UniqueEntity配置为将fooFoo视为重复项?

用例:我的用户实体上有@UniqueEntity("email"),因为我使用电子邮件地址作为用户名。根据{{​​3}},电子邮件地址的本地部分理论上区分大小写,但实际上不区分大小写。

我当然可以在setEmail()中将其转换为小写字母(如 https://stackoverflow.com/a/9808332/1668200)。缺点:

  • 可能会使用户感到困惑(因为他们的电子邮件地址被“修改”了)
  • 以上回答的评论中说:
      

    这不是一个好主意,因为极有可能无法交付。

因此,我宁愿拒绝用户Foo@example.com的注册(如果foo@example.com已经存在),而不是将 all 个用户的地址转换为小写。

1 个答案:

答案 0 :(得分:1)

基于此UniqueEntity

  

repositoryMethod类型:字符串默认值:findBy()

     

用于查询的存储库方法的名称   确定唯一性。如果留空,则findBy()方法将   使用。此方法应返回可计数的结果。

您可以在存储库中创建一个函数,以在sql中应用UPPER()查找该电子邮件是否存在。