Laravel 5. wherehas с полным соотвествием many to many

148
03 ноября 2018, 21:20

Как реализовать получение выборке, где связанные параметры проверяются не по наличию хотя-бы одного, а если только есть все указанные. Например:

$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).

Answer 1

Вам нужно добавить несколько 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();
READ ALSO
Как получить динамическую цену в php

Как получить динамическую цену в php

Делаю форму онлайн бронирования отелей и столкнулся с проблемой: у меня добавлена функция автоматического подсчета стоимости в зависимости...

146
Перезапускается php скрипт каждые 40 секунд

Перезапускается php скрипт каждые 40 секунд

Написал скрипт который выполняется очень долго, прописал настройки для увеличения времени работы скриптаНо скрипт стал перезапускаться...

232
NETELLER API получить баланс

NETELLER API получить баланс

Я изучаю API NETELLER PHP и не могу нигде найти примера каким образом можно получить баланс моего аккаунта, неужели это невозможно ?

159
Подставить значения в тег из базы данных

Подставить значения в тег из базы данных

Как в тег option подставлять значения из таблицы goods БД: value="6300", data-link="http://ecoskarbru/products/287778/belava"

179