Подумайте, на основную часть о том, как использовать WHERE IN
ответили много раз.
Попытка объединить два критерия, как это, не сработает.Точно так же этот SQL никогда не будет работать:
select * from users where (id, email) IN ((1, 2), ('foo@gmail.com', 'bar@gmail.com'));
Вы бы написали это как
select * from users where id IN(1,2) AND email IN('foo@gmail.com', 'bar@gmail.com');
Начиная с 2.5, я думаю, вы захотите:
$qb->andWhere('a.field1 IN (:fieldOneValues)')
->andWhere('a.field2 IN (:fieldTwoValues)')
->setParameter('fieldOneValues', $fieldOneValues)
->setParameter('fieldTwoValues', $fieldTwoValues);
ОБНОВЛЕНИЕ:
Теперь я понимаю лучше.SQL, которым я поделился, показывает, что я не понимал этот синтаксис.Сколько значений вы тестируете?Не могли бы вы подойти к этому как?
(a.field1 = 1 AND a.field2 = 1) OR (a.field1 = 2 AND a.field2 = 2)
При выполнении запроса explain
на самом деле казалось, что MySQL использует ключи намного лучше с этим методом.