Ответ 1
После часа эксперимента по этой глупости, вот синтаксис, чтобы заставить его работать.
$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9)));
У меня возникли проблемы с созданием довольно простого запроса с помощью 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? Я просмотрел документацию, но не могу найти никакого направления.
Спасибо
После часа эксперимента по этой глупости, вот синтаксис, чтобы заставить его работать.
$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9)));
Почему бы не использовать что-то вроде?
$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