使用findoneby()进行不区分大小写的搜索

Ash*_*eri 8 case-insensitive symfony

我有一个名为的存储库 $colorMaster

$colorMaster->findOneBy(array('name' => 'RED'));
Run Code Online (Sandbox Code Playgroud)

即使在我的数据库中存在值为"红色"的记录,它也不返回任何记录.

当我尝试使用值为'Red'的相同代码时

$colorMaster->findOneBy(array('name' => 'Red'));
Run Code Online (Sandbox Code Playgroud)

它返回值.

我们有什么方法可以从symfony获取不区分大小写的记录,findOneBy(); 这样它就可以使用值"RED"给出结果.

Tom*_*ski 18

问题不在Symfony级别,而是在数据库级别.其中一些是区分大小写的,有些则不是.你的情况显然是区分大小写的.要获得结果,无论如何,请尝试以下方法:

     $name = 'REd'; //case doesn't matter
     $colorMaster->createQueryBuilder('a')
        ->where('upper(a.name) = upper(:name)')
        ->setParameter('name', $name)
        ->getQuery()
        ->execute();
Run Code Online (Sandbox Code Playgroud)