2016-04-25 21 views
3

私はこのSQLクエリを作成しようとしており、2番目のパラメータでエラーが発生し続けています。複数のパラメータを持つcreateQueryBuilderとsetParameter?

多分私はここに何かを紛失しています。ここで

は私の要求です:

$pointsTEF = $this->getDoctrine()->getManager(); 
       $pointsTEFs = $pointsTEF->createQueryBuilder('t') 
       ->select('t.points') 
       ->from('AppBundle:Tef', 't') 
       ->where('t.epreuve = :epreuve') 
       ->setParameter('epreuve',$valeur) 
       ->andWhere('t.resultat = :resultat') 
       ->setParameter('resultat',$valeurEpreuve) 
       ->getQuery() 
       ->getResult(); 

これはsetParameterを()を使用しての適切な方法です。 ? TEF t0_ WHERE t0_.epreuve = FROM points_0 AS t0_.pointsをSELECT」実行中

例外が発生しましたか? AND t0_.resultat =? '

SQLSTATE [HY093]:無効なパラメータ番号:paramsは [ "CE"、 "B1"]と[列/パラメータ 1ベース

答えて

6

あるこの

->setParameters(array('param1'=> $param1, 'param2' => $param2)) 

ドキュメントを実行します。
http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/query-builder.html#binding-parameters-to-your-query

+3

私はそれが 'SetParamater'の代わりに 'setParameters'であるべきだと思います。 – kkochanski

+0

はい、ありがとうございました。 – Letsrocks

+0

このソリューションを提案していただきありがとうございます。私はarray()を作るのがかなり論理的です。私は今試したところ、エラーが発生しました: 警告:Doctrine \ ORM \ QueryBuilder :: setParameter()の引数2がなく、AppBundle \ Controller \ DemandesController.phpで250行目に呼び出され、定義されています。ソースコード:http://pastebin.com/UEtDUwgq – Cyberflow

関連する問題