不知何故,学说不允许我比较两个低字符串值:变量的值和用户的名字。
$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没有降低。为什么会这样?
答案 0 :(得分:5)
我找到了解决方案:
$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();
仍然好奇为什么第一次尝试不起作用。
答案 1 :(得分:0)
您可以尝试
$query = $em->createQuery("SELECT u FROM Isha\SuvyaBundle\Entity\Useru WHERE u.fName LIKE '%$fName%' ");
$result = $query->getResult();
答案 2 :(得分:-2)