#php #mysql #laravel
Вопрос:
Я застрял в проблеме, что я хочу сделать фильтр данных в фреймворк Laravel или MySQL, который я впоследствии преобразует в Laravel, и это я хочу фильтровать значения из диапазона слайдера гарантийное
который фактически между 80 и 150 (по выбору пользователя)
и в базе данных (MySQL) у меня есть только минимальное значение-80, а максимальное значение-200
но при использовании следующего кода он возвращает только максимальное значение заданного минимального значения
$product = product::join('tire_brands', 'product.brand', '=', 'tire_brands.id')
->join('speedrating','product.speedrating','=','speedrating.id')
->where($whereData)
->when(!empty($category), function ($query) use ($category) {
return $query->whereIn('itemtype', $category);
})
->when(!empty($speedrating), function ($query) use ($speedrating) {
return $query->whereIn('speedrating', $speedrating);
})
->when(!empty($tirebrands), function ($query) use ($tirebrands) {
return $query->whereIn('brand', $tirebrands);
})
->when(!empty($minwarrenty) amp;amp; !empty($maxwarrenty), function ($query) use ($minwarrenty,$maxwarrenty) {
return $query->whereBetween('warrenty', [$minwarrenty, $maxwarrenty]);
})
->when(!empty($minimum_load) amp;amp; !empty($maximum_load), function ($query) use ($minimum_load,$maximum_load) {
return $query->whereBetween('maxload', [$minimum_load, $maximum_load]);
})
->when(!empty($curroff), function ($query) use ($curroff) {
return $query->whereIn('curr_offerid', $curroff);;
})
->when(!empty($sidewal), function ($query) use ($sidewal) {
return $query->whereIn('sidewall_id', $sidewal);;
})
->when(!empty($tyrtyp), function ($query) use ($tyrtyp) {
return $query->whereIn('tyretype_id', $tyrtyp);;
})
->get(['product.id','product.name as pronam',
'tire_brands.name as brand', 'sku','slug','warrenty','speedrating','itemtype',
'product.image','product.video','speedrating.name as speedrating','touring']);
return $product;
Что я делаю не так?
Комментарии:
1. Неясно, в чем проблема.
2. посмотрите результат запроса перед тем, как использовать метод get() с помощью toSql (), и создайте dd($product); наконец, вставьте полученный запрос в клиент БД и посмотрите результаты
3. сэр , на самом деле это похоже на ценовой диапазон(фильтр продукта ) в laravel, но в моем случае у меня есть два ползунка конечного диапазона. начальный узел динамически устанавливается на минимальное значение гарантии в базе данных, а последний узел диапазона-ползунок устанавливается на максимальную гарантию продукта, который будет использоваться пользователем для фильтрации диапазона гарантии
4. но проблема, с которой я сталкиваюсь, заключается в том, что пользователь выбирает значение warrenty, например, если оно равно 80, как минимум, и пользователь перемещает sildes в 89 точках, а максимальное значение warrenty равно 200, используя этот код ->когда(!пусто($minwarrenty) amp;amp; !пусто($maxwarrenty), функция ($запрос) использует ($minwarrenty,$maxwarrenty) { возврат $запроса->>Где между(‘warrenty’, [$minwarrenty, $maxwarrenty]); }) он возвращает только максимум, даже если он составляет 86, так как он также находится в диапазоне