【问题标题】:Make Doctrine's UniqueEntity constraint case-insensitive使 Doctrine 的 UniqueEntity 约束不区分大小写
【发布时间】:2019-07-14 11:12:31
【问题描述】:

有没有办法将UniqueEntity 配置为将fooFoo 视为重复项?

用例:我的用户实体上有@UniqueEntity("email"),因为我使用电子邮件地址作为用户名。根据https://stackoverflow.com/a/9808332/1668200,电子邮件地址的本地部分理论上区分大小写,但实际上不区分大小写。

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

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

    这不是一个好主意,因为它无法交付的可能性很小。

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

【问题讨论】:

    标签: php symfony doctrine


    【解决方案1】:

    基于此UniqueEntity

    repositoryMethod 类型:string 默认:findBy()

    用于进行查询的存储库方法的名称 确定唯一性。如果它留空,findBy() 方法将 使用。这个方法应该返回一个可数的结果。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 2013-05-30
      • 2020-12-25
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      相关资源
      最近更新 更多