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

→ Ссылка