Имеются две сущности:
- products, с полями id, name, price;
- collections, с полями id, name, external_collection_id;
отношение у них многие ко многим, соответственно есть таблица collection_product, c полями collection_id и product_id;
Мне нужно получить все товары, кроме тех, id коллекций которых есть в запросе.
Проблема вот в чём:
мой запрос
Product::whereHas('collections', function (Builder $query) {
return $query->whereNotIn('id', [15]);
})->orderBy('created_at', 'desc')->limit(4)->get(),
В итоге в ответе всё равно есть продукты которые лежат в коллекции с id 15.
сработает только в том случае, если напишу что-то вроде
$query->whereNotIn('collection_id', [12, 14, 15])
то есть если я перечислю все коллекции товара, что явно не то, чего я хочу.
как быть и что я делаю не так?