У меня есть функция поиска на моем веб-сайте, благодаря которой пользователь может выполнять поиск по различным свойствам автомобилей в определенных диапазонах.Пользователь может или не может выбрать поиск по определенному свойству.Эти массивы являются просто динамическими и могут иметь 0, 1, 2 или 3 записи, в зависимости от того, какое использование выбрано (поэтому запрос должен быть динамическим), то есть:
$price_ranges = [
[0, 1000],
[1000, 2000],
[2000, 3000]
];
$weight_ranges = [
[1000, 2000],
[5000, 9999]
]
Я хочу использовать построитель запросов вLaravel / Eloquent для создания соответствующего запроса для этого, но у меня много трудностей при группировке предложений.Вот что у меня есть:
$query = Shipment::with(['cars']);
foreach($price_ranges as $price_range){
$query->whereHas('cars', function($q) use(&$price_range){
$q->where('price', '>=', $range[0])->where('price', '<=', $range[1]);
});
}
foreach($weight_ranges as $weight_range){
$query->whereHas('cars', function($q) use(&$weight_range){
$q->where('weight', '>=', $range[0])->where('weight', '<=', $range[1]);
});
}
$results = $query->get();
Проблема с этим кодом состоит в том, что он находит грузы, у которых есть машины, которые удовлетворяют каждому ценовым условиям ... но я хочу, чтобы он нашелотправления, если он удовлетворяет любым условиям и возвращает только соответствующие автомобили.Я создал схему, чтобы лучше проиллюстрировать, что я пытаюсь сделать: