2016-12-10 20 views
0

なぜ、変数がsetParameterに渡されたときにクエリビルダが機能しないのかわかりませんでした。symfonyのsetParameterが正しく動作しない

これは動作します:

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(); 
    } 

が、基準は、変数を経由して渡されたとき、それは、それがさらに下にそれをドリルヌルとして

// 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(); 
     } 

を$名前を返していない、これは」doesnの変数も渡されないというわけではありません。

+1

$ nameが設定されていないか、投稿したコードが実際のコードと一致しません。 %の周りにスペースを入れるのは少し奇妙です。あなたは本当に "ポール"の代わりに "ポール"にマッチしたいですか? – Cerad

答えて

1

実際、Cerad氏のように、私はそれがあなたの質問を混乱させるあなたのスペースだと思うのです。 私はいくつかの組み合わせをテストし、それが唯一のこの1つは、それが働いているようです:あなたは、特にそれらのスペースを必要としない場合

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

だから、私はあなたがそれらを削除示唆しています。

関連する問題