2013-07-07 2 views
4

어떻게 든 doctrine은 변수의 이름과 사용자의 이름을 비교할 수 없습니다. $ FNAME 대문자 문자열 (예 : '롭')이있는 경우에만Doctrine Query Builder LOWER가 작동하지 않습니다.

$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')로 표기된 경우에도 이러한 결과가 나타나야한다는 것입니다. d.firstNames가 낮아지지 않은 것 같습니다. 왜 이런 경우입니까?

답변

3

시도 할 수 있습니다 : 왜 첫 번째 시도가 작동하지 않는

아직
 $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(); 

호기심.

0

당신은 내가 해결책을 발견

$query = $em->createQuery("SELECT u FROM Isha\SuvyaBundle\Entity\Useru WHERE   u.fName LIKE '%$fName%' "); 
    $result = $query->getResult(); 
+0

행운 – apfz

관련 문제