我正在使用Laravel 4.1和Postgresql编写一个Web应用程序作为数据库。 数据库区分大小写,但我想让它不区分大小写,因为,当用户登录时,他应该能够使用大写或小写的电子邮件地址(如在其他所有网站中)访问。但是,密码哈希的列必须区分大小写,因为我使用的加密方法会生成区分大小写的字符串。
我正在使用Laravel的Eloquen ORM,因此我不直接编写查询。
我该如何解决这个问题?
提前致谢!
答案 0 :(得分:10)
有点晚了,但这很简单。只需使用" ILIKE"运营商,例如
User::where("email", "ILIKE", $email)->get();
答案 1 :(得分:0)
我有这个确切的问题 - 我的解决方案是假装不区分大小写:
1)在相关方法中添加一行,使输入的电子邮件值小写
2)在数据库中进行了替换,以便电子邮件为小写
3)确保新电子邮件以小写形式出现
详细信息:
1)相关方法*是核心laravel代码,因此您使用在验证请求后替换电子邮件值的新版本覆盖它们: $ request [' email'] = Str :: lower($ request [' email']);
2)更新用户设置email = lower(email);
3)对我来说这很容易,因为我自己创建所有用户(我的网站仅供家庭使用) - 但您在auth流程中做了类似的事情
希望这有帮助!