Подтвердить что ты не робот

Doctrine: множественный (whereIn OR whereIn) запрос?

У меня возникли проблемы с созданием довольно простого запроса с помощью Doctrine...

У меня есть два массива ($ countries, $cities), и мне нужно проверить, соответствуют ли значения записей базы данных внутри. Я ищу что-то вроде:

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

... с "страной", являющейся WHERE IN для $countries и "city", являющейся ГДЕ IN для $city.

Я мог бы разделить эти два, но в запросе есть много других условий, чтобы это было невозможно. В результате SQL я буду:

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

Таким образом, можно было бы думать об этом также как о брекетинге. Кто-нибудь знает, возможно ли это с помощью Doctrine DQL? Я просмотрел документацию, но не могу найти никакого направления.

Спасибо

4b9b3361

Ответ 1

После часа эксперимента по этой глупости, вот синтаксис, чтобы заставить его работать.

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

Ответ 2

Почему бы не использовать что-то вроде?

$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