2017-07-05 3 views
0

ich diesen einen [Syntax Error] line 0, col 95: Error: Expected Literal, got 'value' Fehler, wenn ich versuche, die folgende Abfrage auszuführen:Syntaxfehler: Zeile 0, Spalte 95: Fehler: Erwartete Literal erwartet, ‚‘

$qb = $this->createQueryBuilder('a'); 
    $qb 
     ->join('a.categories', 'cat') 
     ->where($qb->expr()->in('cat.name', $category)); 
    return $qb->getQuery()->getResult(); 

Das abgebildete Feld wie folgt:

Dachte, es war ein Problem mit dem Datentyp, aber ich kann wirklich nicht finden, was falsch ist.

+0

Was ist '$ Kategorie'? – goto

+0

'$ category' ist die Variable, die ich als Parameter für die Methode gesetzt habe –

+0

' öffentliche Funktion getAvecCategory ($ category) { $ qb = $ this-> createQueryBuilder ('a'); $ qb-> join ('a.categories', 'cat') -> wo ($ qb-> expr() -> in ('cat.name', $ category)); Rückgabe $ qb-> getQuery() -> getResult(); } ' –

Antwort

0

Sie haben setParameter() zu verwenden Parameter zu binden Variablen dql unter Siehe

qb = $this->createQueryBuilder('a'); 

$qb 
    ->join('a.categories', 'cat') 
    ->where('cat.name = :nameParam') 
    ->setParameter('nameParam', $category); 
return $qb->getQuery()->getResult(); 

(ich es genannt nameParam es nichts mit cat.name zu tun hat, zu zeigen)

Wenn Sie möchten, Zur Verwendung der $qb->expr()-> * Methoden sollten Sie eq() und nicht in()

verwenden
Verwandte Themen