使 Doctrine 的唯一实体约束不区分大小写



是否有一种方法可以配置独特性以将fooFoo视为重复?

用例:我的用户实体上有@UniqueEntity("email"),因为我将电子邮件地址用作用户名。根据https://stackoverflow.com/a/9808332/1668200电子邮件地址的本地部分在理论上对病例敏感,但在实践中对案例不敏感。

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

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

    这不是一个好主意,因为很可能不会交付。

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

基于此独特性:

RepositoryMethod类型:字符串默认值:FindboD()

用于将查询进行查询的存储库方法的名称 确定独特性。如果剩下空白,Findby()方法将 使用。此方法应返回可数结果。

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

最新更新