Doctrine:Multiple(whereIn OR whereIn)查询?

时间:2010-02-26 18:10:05

标签: symfony1 doctrine where-clause dql

我在使用Doctrine制作一个相当简单的查询时遇到了麻烦...

我有两个数组($ countries,$ cities),我需要检查数据库记录值是否与任何内部匹配。我正在寻找类似的东西:

->whereIn('country', 'city', $countries, $cities)

......“国家/地区”是$ country的一个地方,'city'是$ city的地方。

我可以将两者分开,但是所需的查询还有很多其他条件,所以这是不可能的。我之后得到的SQL将是:

SELECT ... 
WHERE ... 
AND ...
AND ... 
AND ('country' IN (1,2,3) OR 'city' IN (7,8,9))
AND ... 
AND ...;
因此,人们可以将其视为包围问题。有人知道Doctrine DQL是否可以实现这一点?我查看了文档,但找不到任何方向。

由于

2 个答案:

答案 0 :(得分:38)

经过一个小时的试验这个废话后,这是使它工作的语法。

$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9)));

答案 1 :(得分:4)

为什么不使用类似的东西?

$countryIds=[1,2,3];
$cityIds=[7,8,9];

$q->whereIn('country',$countryIds)->andWhereIn('city',$cityIds);

另外,将它们链接在一起用于上下文(大多数Doctrine方法返回$ this)。

请参阅http://www.symfony-project.org/doctrine/1_2/en/06-Working-With-Data