В базе данных есть Продукты с множеством опций, два из них, скажем, Вариант 1 и Вариант 2. Мне нужно сделать запрос (я знаю, как построить все это, я просто застрял со следующей логикой * Только 1029 *), который будет показывать только такие продукты, где:
- Если не выбран ни 1, ни 2 вариант, показать все продукты
- Если выбран 1 вариант, показывать только те продукты, которые имеют опция
- Если выбраны опции 2, показывать только те продукты с этой опцией
- Если выбраны опции 1 и опция 2, показывать только те товары с этими двумя опциями
Я попробовал это:
function GetProducts(keywords) {
...
->andWhere($qb->expr()->orX(
$qb->expr()->eq('option1', keywords['option1']),
$qb->expr()->eq('option2', keywords['option2'])
))
...
}
Ключевыми словами ['option1'] и ключевыми словами ['option2'] являются значения 0 или 1 из флажков с такими параметрами.
Но результатом является следующее:
- Если не выбран ни вариант 1, ни вариант 2, отображаются все продукты - ОК
- Если выбран вариант 1, продукты с вариантом 1 И все продукты без какого-либо из этих двух параметров показаны - НЕ то, что мне нужно * 10 23 *
- Если выбран вариант 2, отображаются продукты с вариантом 1 и все те, у кого нет этих двух вариантов - НЕ то, что мне нужно
- Если выбран вариант 1 и вариант 2, отображаются все продукты - НЕ что мне нужно