2012-07-24 59 views
0

我有一系列的产品ID。我必须做这样的查询:Symfony2 doctrine mysql IN查询

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

我有我的ids变量$ 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(); 

不起作用。我得到一个错误:

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

什么是“不工作”,其实是什么意思?你的问题是什么? – 2012-07-24 22:21:15

+0

我生成一个错误:“[Syntax Error] line 0,col 66:Error:Expected Doctrine \ ORM \ Query \ Lexer :: T_OPEN_PARENTHESIS,got':pids'” – twoface88 2012-07-24 22:21:41

+0

如果您换行,会发生什么情况:括号中的PID如错误说? – 2012-07-24 22:25:51

回答

8

如果你尝试

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

它明确地对你说,它预期parentheses但得到placeholder

+0

不起作用。 [语义错误] line 0,col 58 near'name IN(:pi':错误:类SRC \ MainBundle \ Entity \ Product没有字段或关联名为 – twoface88 2012-07-24 22:29:32

+1

@ twoface88这种错误听起来是否正确?您的Product类没有名称? – 2012-07-24 22:31:57

+0

它确实有“名字” – twoface88 2012-07-24 22:33:22