2012-07-24 3 views
0

J'ai un tableau d'ID de produits. Je dois faire requête comme ceci:Symfony2 doctrine mysql IN requête

SELECT * FROM products WHERE pid IN (1, 2, 8, 4, ...) // etc 

J'ai mes ids à variables PIDs $.

$qb = $em->createQueryBuilder(); 
$query = $qb->select('p.pid') 
      ->from('SRC\MainBundle\Entity\Product', 'p') 
      ->where('p.name IN :pids') // error is HERE 
      ->setParameter('pids', $pids) 
      ->getQuery(); 

Ne fonctionne pas. Je reçois une erreur:

[Syntax Error] line 0, col 66: Error: Expected Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS, got ':pids' 
+0

Que signifie « ne fonctionne pas » signifie réellement? Quel est votre problème? –

+0

En cas d'erreur: "[Erreur de syntaxe] ligne 0, col 66: Erreur: Doctrine attendue \ ORM \ Query \ Lexer :: T_OPEN_PARENTHESIS, got ': pids'" – twoface88

+0

Que se passe-t-il si vous retournez: pids entre parenthèses comme l'erreur dit? –

Répondre

8

si vous essayez

->where('p.name IN (:pids)') // error is HERE 

Il dit explicitement qu'il vous attend parentheses mais obtient placeholder

+0

ne fonctionne pas. [Erreur sémantique] ligne 0, col 58 près de 'nom IN (: pi': Erreur: Classe SRC \ MainBundle \ Entity \ Le produit n'a pas de champ ou d'association nommé nom – twoface88

+1

@ twoface88 Cette erreur est-elle correcte? nom? –

+0

il a "nom" – twoface88