2016-07-23 7 views
-1

In Symfony habe ich diese Query Builder:Symfony Query Builder Fehler: Erwartete Literal erwartet, '>'

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

Ausführen der Abfrage erhalte ich diese Fehlermeldung:

[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

Wer hat eine Ahnung, warum Das läuft nicht? Dank

+0

tut es funktioniert ohne '-> getId()'? .. Sie werden versuchen, 'getId()' aus einer tatsächlichen 'question_id' ... vielleicht bin ich falsch .. sry – Wizard

+0

@Wizard' question_id' ist ein Feld, das automatisch erstellt wurde basierend auf meiner Entität Beziehung (one Frage kann viele Antworten haben)/Wenn ich es herausnehme, dann findet es die Eigenschaft 'question_id' in meiner Entität nicht. Vielleicht würde eine andere Abfrage funktionieren: Ich muss alle Antworten erhalten, wo die Join-Spalte zwischen den beiden Tabellen 'question_id' mit der angegebenen ID übereinstimmt. Grundsätzlich alle Antworten, die für eine Frage stehen. – Otonel

+0

Ich sehe, ich meine, wird es funktionieren, wenn Sie diese Zeile ändern: '-> where ('a.question_id-> getId() =: qID')' zu '-> where ('a.question_id =: qID)' ? – Wizard

Antwort

0

Lehre nicht verstehen solche Syntax (a.question_id->getId() = :qID), stattdessen könnte man es so schreiben:

$er->createQueryBuilder('a') 
    ->where('a.question = :qID') // here, "question" is a field name 
    ->setParameter('qID', $q_id); 
Verwandte Themen