2016-07-23 22 views
-1

を得た:symfonyのクエリビルダエラー:リテラル、私はこのクエリビルダを持つsymfonyにおいて「>」

私はこのエラーを取得するクエリ実行
$form = $this->createFormBuilder() 
       ->add('answers', EntityType::class, array(
        'class' => 'QuizBundle\Entity\Answer', 
        'query_builder' => function (EntityRepository $er) use ($q_id) { 
         return $er->createQueryBuilder('a') 
          ->where('a.question_id->getId() = :qID') 
          ->setParameter('qID', $q_id); 
        }, 
        'multiple'=>false, 
        'expanded'=>true, 
        'choice_label' => 'answer', 
       )) 
       ->add('Submit',SubmitType::class, array('label' => 'Send Answer')) 
       ->getForm(); 

[2/2] QueryException: [Syntax Error] line 0, col 58: Error: Expected Literal, got '>'
[1/2] QueryException: SELECT a FROM QuizBundle\Entity\Answer a WHERE a.question->getId() = :qID

誰もが任意のアイデア理由がありますがこれは実行されていませんか?おかげ

+0

それは'なしで動作しますか? ..実際の 'question_id'から' getId() 'しようとします...間違っているかもしれません。 – Wizard

+0

@Wizard' question_id'は私のエンティティの関係に基づいて自動的に作成されたフィールドです質問にはたくさんの回答があるかもしれません)/私がそれを取り除くと、私のエンティティで 'question_id'というプロパティが見つかりません。たぶん異なるクエリが動作するかもしれません:私は2つのテーブル 'question_id'の間の結合カラムが供給されたIDと一致するところで全ての答えを得る必要があります。基本的には、質問に対するすべての回答。 – Otonel

+0

私は、この行を変更すると動作することを意味しています: ' - > where(' a.question_id-> getID()=:qID ') '〜' where(' a.question_id =:qID) ' ? – Wizard

答えて

0

はDoctrineは(a.question_id->getId() = :qID)を、このような構文を理解することはありません、代わりに、あなたはこのようにそれを書くことができます: - `>のgetId()

$er->createQueryBuilder('a') 
    ->where('a.question = :qID') // here, "question" is a field name 
    ->setParameter('qID', $q_id); 
関連する問題