如何在登录表单中使用户名不区分大小写?

ole*_*k07 1 php postgresql symfony symfony4

我正在使用 Symfony 的登录表单,但如果输入的用户名是“FOO”并且数据库中存储的是“foo”,则我无法登录。我正在使用 Postgres。这意味着用户名字段区分大小写。我能做些什么?

小智 5

这主要取决于您的数据库服务器。MySQL 不区分大小写,PostgreSQL 区分大小写。

但是你可以像这样编写查询

$this->createQueryBuilder('user')
            ->where('LOWER(user.username) = :username')
            ->setParameter('username', strtolower($username))
            ->getQuery()
            ->getResult()
            ;

Run Code Online (Sandbox Code Playgroud)

  • 更好地存储具有规范化(较低等)用户名的用户,以摆脱“LOWER”功能并减少数据库负载。看看FOSUserBundle 中它是如何制作的。 (2认同)