2016-12-10 11 views
0

그래, 변수가 setParameter로 전달 될 때 쿼리 빌더가 작동하지 않는 이유를 알 수 없습니다.symfony setParameter가 제대로 작동하지 않습니다.

이 작동 : 그것은 $ 아래로 그것을 더 드릴 널

// from an entity 
    $matches = $em->getRepository('AppBundle:User')->findByMatch($type); 

    //......... 

    // repo 
    public function findByMatch($name) 
     { 
      $result = $this->createQueryBuilder('u') 
       ->select('u.firstname, u.lastname') 
       ->where('u.firstname LIKE :fname') 
       ->setParameter('fname', ' % '.$name. ' %') 
       ; 

      return $result->getQuery()->getResult(); 
     } 

로 이름을 반환,

public function findByMatch($name) 
    { 
     $result = $this->createQueryBuilder('u') 
      ->select('u.firstname, u.lastname') 
      ->where('u.firstname LIKE :fname') 
      ->setParameter('fname', ' % '.'paul'.' %') 
      ; 

     return $result->getQuery()->getResult(); 
    } 

하지만 기준이 변수를 통해 전달 될 때, 그것은하지 않습니다,이 '아무튼 변수가 전달되지 않는 것은 아닙니다.

public function findByMatch($name = "paul") 
    { 
     $result = $this->createQueryBuilder('u') 
      ->select('u.firstname, u.lastname') 
      ->where('u.firstname LIKE :fname') 
      ->setParameter('fname', ' % '.$name. ' %') 
      ; 

     //return $result; 

     return $result->getQuery()->getResult(); 
    } 
+1

$ name이 (가) 설정되지 않았거나 게시 한 코드가 실제 코드와 일치하지 않습니다. 그리고 % 주위에 공백을 두는 것은 약간 이상합니다. "paul"대신 "paul"과 일치시키고 싶습니까? – Cerad

답변

1

실제로 Cerad가 말했듯이, 나는 이것이 당신의 질문에 얽혀있는 당신의 공간이라고 생각합니다. 나는 몇 가지 조합을 테스트 만이 하나의 IT 작업 보인다 : 특별히 그 공간을 필요로하지 않는 경우

->setParameter('fname', '%' . $name . '%') 

그래서, 당신이 그들을 제거하는 것이 좋습니다.