Как реализовать получение выборке, где связанные параметры проверяются не по наличию хотя-бы одного, а если только есть все указанные. Например:
$select_filters = array(1,2,3);
$posts= Post::where('publish', $publish)->whereHas('filters', function ($query) use($select_filters ) {
$query->whereIn('filters.id', $select_filters );
})->pluck('id')->toArray();
Соответственно я получаю все записи, где есть хотя-бы 1 id из $select_options. А мне нужно получить записи, где привязаны все фильтры (1,2,3).
Вам нужно добавить несколько whereHas для этого:
$query = Post::where('publish', $publish);
foreach($select_filters as $filter_id) {
$query->whereHas('filters', function ($q) use ($filter_id) {
$q->where('filters.id', $filter_id);
});
}
$posts = $query->get();
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости