gpt4 book ai didi

symfony - Doctrine 查询生成器 LOWER 不起作用

转载 作者:行者123 更新时间:2023-12-02 13:49:44 24 4
gpt4 key购买 nike

不知何故, Doctrine 不允许我比较两个较低的字符串值:变量的值和用户的名字。

    $qb = $this->getEntityManager()->createQueryBuilder();
$qb
->select('d')
->from('MyBundle:User', 'd')
->where('LOWER(d.firstName) LIKE :fName')
->setParameter('fName', strtolower('%'.$fName.'%'));

$result = $qb->getQuery()->execute();

仅当 $fName 具有大写字符串(即“Rob”)时,才会返回“Robert”和“Robby”等结果。但我想要的是,即使 $fName 拼写为小写(“rob”),这些结果也应该出现。看来 d.firstNames 没有降低。为什么会这样?

最佳答案

我找到了解决方案:

        $qb = $this->getEntityManager()->createQueryBuilder();
$qb
->select('u')
->from('MyBundle:User', 'u')
->where($qb->expr()->andX(
$qb->expr()->like('LOWER(u.firstName)', '?1'),
$qb->expr()->like('LOWER(u.lastName)', '?2')
))
->setParameter('1', '%' . strtolower($firstName) . '%')
->setParameter('2', '%' . strtolower($lastName) . '%');

$result = $qb->getQuery()->execute();

仍然好奇为什么第一次尝试没有成功。

关于symfony - Doctrine 查询生成器 LOWER 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com