Laravel postgresql不区分大小写

时间:2014-01-24 10:32:03

标签: postgresql laravel eloquent case-sensitive case-insensitive

我正在使用Laravel 4.1和Postgresql编写一个Web应用程序作为数据库。 数据库区分大小写,但我想让它不区分大小写,因为,当用户登录时,他应该能够使用大写或小写的电子邮件地址(如在其他所有网站中)访问。但是,密码哈希的列必须区分大小写,因为我使用的加密方法会生成区分大小写的字符串。

我正在使用Laravel的Eloquen ORM,因此我不直接编写查询。

我该如何解决这个问题?

提前致谢!

2 个答案:

答案 0 :(得分:10)

有点晚了,但这很简单。只需使用" ILIKE"运营商,例如

User::where("email", "ILIKE", $email)->get();

答案 1 :(得分:0)

我有这个确切的问题 - 我的解决方案是假装不区分大小写:

1)在相关方法中添加一行,使输入的电子邮件值小写

2)在数据库中进行了替换,以便电子邮件为小写

3)确保新电子邮件以小写形式出现

详细信息:

1)相关方法*是核心laravel代码,因此您使用在验证请求后替换电子邮件值的新版本覆盖它们:         $ request [' email'] = Str :: lower($ request [' email']);

  • 登录流程:来自AuthenticatesUsers的postLogin函数,我添加到AuthController.php postLogin
  • 密码重置流程:来自ResetsPassword路径的postEmail和postReset函数,我在PasswordController.php中添加了它们

2)更新用户设置email = lower(email);

3)对我来说这很容易,因为我自己创建所有用户(我的网站仅供家庭使用) - 但您在auth流程中做了类似的事情

希望这有帮助!