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

问题描述 投票:0回答:1

有没有办法配置UniqueEntityfooFoo视为重复?

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

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

  • 可能会混淆用户(因为他们的电子邮件地址被“修改”)
  • 正如上述答案的评论所说: 这不是一个好主意,因为它很有可能无法交付。

所以我宁愿拒绝用户[email protected]的注册(如果[email protected]已经存在),而不是将所有用户的地址转换为小写。

php symfony doctrine
1个回答
1
投票

基于这个UniqueEntity

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.