У меня есть проект, в котором у меня есть следующие модели:
- Продукты
- FeatureTypes
- Особенности
- Варианты
И таблицы и отношения следующие:
![Database Schema Diagram](https://i.stack.imgur.com/IJtnx.png)
У меня есть запрос, где я хочу получить Variants
из Product
с некоторым конкретным Features
.
Variant
может иметь 1 или много Features
, но я хочу получить все Variants
, если я дам один Feature
, и выполнить более точный поиск по Variants
, если я дал больше Features
, пока я иметь только один Variant
, который может иметь только один набор определенных Feature
.
Вот код, который у меня сейчас есть:
$variants = $product
->variants()
->whereHas('features', function($query) {
$query->whereIn('id', json_decode(request('features')));
})
->with('features', 'features.featureType')
->get();
request('features')
содержит строковый массив с идентификаторами Features
.
Я использовал метод Eloquent whereIn
, полагая, что он даст мне только те варианты, которые содержат в точности все Features
, указанные в запросе.
Но при повторной проверке документации я вижу, что она вернет все Variants
, для которых в запросе указан хотя бы один Feature
, что здесь не то, что мне нужно.
Как я могу сделать запрос этого Eloquent, чтобы вернуть мне только Variants
, которые связаны со всеми Features
, указанными в запросе?
Заранее спасибо за помощь! ;)