2013-01-22 67 views
1

我想用where建立一个含有多个值的查询。值的数量是可变的(从一到十)。我的查询是这样的,现在:Symfony2和multiple where

return $repository->createQueryBuilder('s') 
    ->where('s.id = :id') 
    ->setParameter('id', '1') 

但我想那id参数是数组。我试过setParameters,但那不是功能。

回答

2

尝试此

return $repository->createQueryBuilder('s') 
    ->where('s.id IN (:id)') 
    ->setParameter('id', array('1','2','3')) 

这使用作为参数传递的阵列被使用在IN statment。

使用可变做到这一点:

$myarray = array('1','2','3'); 
return $repository->createQueryBuilder('s') 
    ->where('s.id IN (:id)') 
    ->setParameter('id', $myarray) 
+0

好,伟大工程!你能告诉我,我怎样才能传递一个变量而不是数组?当我在构建器外部定义'$ asd'变量,然后我想使用它时,Symfony会返回未知变量。 –

+0

@TomekBuszewski更新了我的答案 – ManseUK

+0

是的,我在表单生成器:)所以我不得不使用'use'。但是,你的答案帮助我很多。谢谢! –