我在使用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是否可以实现这一点?我查看了文档,但找不到任何方向。
由于
答案 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