Laravel. Исключить частичные совпадения при запросе в БД
Получаю записи из таблицы по привязанным фильтрам. Получаем два фильтра, возвращаются записи, к которым привязаны все два фильтра (нужны только они) и те, к кому привязан хотя бы один. Как исключить последние?
$resultS = tikets::select('tikets.id', 'tiket_filters.filter_value_id' )
->leftJoin('tiket_filters', 'tikets.id', '=', 'tiket_filters.tiket_id')
->where('tikets.status', 1)
->whereIn('tiket_filters.filter_value_id', $filtersArray)
->get()
->toArray();
Ответы (1 шт):
Автор решения: Alex Khonko
→ Ссылка
Вам нужно дополнительно делать подсчет фильтров, запрос будет аналогичен моему:
select tikets.id tiket_filters.filter_value_id count(DISTINCT tiket_filters.filter_value_id) as c
FROM tikets
WHERE tiket_filters.filter_value_id IN (1,2,3)
GROUP BY tickets.id
HAVING c >= 2 # filtersCount