2017-03-06 4 views
1

Also ich habe die Abfrage folgende Lehre:Ungültige Parameternummer Lehre

$qb = $this->createQueryBuilder('c') 
     ->select('c','g') 
     ->join('c.descendant', 'g'); 

    $qb2 = $this->createQueryBuilder('c2') 
     ->select('c2.id') 
     ->addOrderBy('c2.ancestor', 'ASC'); 

    if ($params['rootGroup']) { 
     $qb2->where('c2.ancestor = :groupId') 
      ->setParameter('groupId', $params['rootGroup']->getId()); 
    } 

    $in = $qb->expr()->in('g.id', $qb2->getDQL()); 

    $qb->where($in); 

, wenn ich die getQuery run() Ich habe die folgende Ausnahmemeldung:

Ungültige Parameternummer: Anzahl der gebundenen Variablen nicht Anzahl von Tokens entsprechen

ich Dump meine DQL und ich habe folgendes:

"SELECT c, g FROM CI\GroupBundle\Entity\GroupClosure c INNER JOIN c.descendant g WHERE g.id IN(SELECT c2.id FROM CI\GroupBundle\Entity\GroupClosure c2 WHERE c2.ancestor = :groupId ORDER BY c2.ancestor ASC)" 

Ich dump auch die getParameter() von $ qb und $ qb2 und ich habe leere Array für $ qb und ein Array mit 1 Parameter-Objekt auf $ qb2.

Ich weiß wirklich nicht, was falsch mit meiner Abfrage ist, da ich erwarte, dass ich nur 1 Wert binden sollte.

Danke.

+0

Was bedeutet '$ params ['rootGroup'] -> getId()' zurück? – LBA

+0

ganze Zahl. Die primäre ID der Entität. – iamjc015

Antwort

2

->setParameter('groupId', $params['rootGroup']->getId()) verschieben Sie es auf $ qb. getDQL() gibt dql mit Parameternamen, keine Werte zurück.

+0

Es hat funktioniert. Vielen Dank. Akzeptiere das als Antwort. – iamjc015

Verwandte Themen