14

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

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

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

... 'country' 是 $countries 的 WHERE IN,而 'city' 是 $city 的 WHERE IN。

我可以将两者分开,但所需的查询还有很多其他条件,所以这是不可能的。我所追求的结果 SQL 将是:

SELECT ... 
WHERE ... 
AND ...
AND ... 
AND ('country' IN (1,2,3) OR 'city' IN (7,8,9))
AND ... 
AND ...;

因此,人们也可以认为它只是一个括号问题。任何人都知道这是否可以通过 Doctrine DQL 实现?我浏览了文档,但找不到任何方向。

谢谢

4

2 回答 2

40

在对这种废话进行了一个小时的试验之后,下面是使它起作用的语法。

$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9)));
于 2010-02-26T19:09:08.160 回答
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

于 2012-04-02T15:08:09.770 回答