Я создаю форму поиска подержанных автомобилей. В форме пользователь может установить флажки для опций, которые должны быть у автомобиля. Поскольку пользователь может выбрать несколько параметров, мне нужно найти автомобиль, в котором есть все параметры, выбранные пользователем.
Я пытаюсь создать запрос, который проверяет, есть ли у «автомобиля» выбранные параметры. Прямо сейчас я могу проверить, есть ли у автомобиля один из выбранных вариантов, выполнив:
// The options filter is something special, the parameter is passed as a comma separated
// String with options ids
if($param == 'car.options' && $optionsIds){
$queryBuilder->leftJoin('car.options', 'option');
$options = $queryBuilder->expr()->orX();
foreach(explode(',', $optionsIds) as $id) {
$options->add($queryBuilder->expr()->eq('option.id', $id));
}
$wheres->add($options);
continue;
}
Но когда я меняю «orX» на «andX», результат всегда возвращается пустым.
Фрагмент кода выше является частью более крупной функции.