#laravel #eloquent #eloquent-relationship
Вопрос:
Я пробую строку поиска, где я хочу ввести цену, например, 3000, и я хочу показать мне диапазон цен от 3000-3999, а также для других цен, 1000-1999, 2000-2999 и т. Д…
У меня есть этот код, который показывает мне только точную цену, которую я набираю
->orWhere('price', 'LIKE', '%'.$request->search.'%');
Как я должен это сделать?
Комментарии:
1. пробовать
orWhereBetween('price',$request->search,$request->search 999);
Ответ №1:
Если в вашем запросе всегда есть что-то вроде
1000 2000 3000 …
Вы могли бы сделать что-то вроде
->whereBetween('price', [(int)$request->search, (int)$request->search 999])
Ответ №2:
LIKE
Предложение ищет определенные шаблоны и обычно полезно для поиска строк. Вам было бы лучше использовать СРАВНЕНИЕ или ЛОГИЧЕСКИЕ операторы для поиска цен между каждым диапазоном.
$lowerLimit = (int)$request->search;
$higherLimit = $lowerLimit 999;
$query->whereLike('name','LIKE','$%'.$request->name.'%')
.... Additional Conditions
->orWhereBetween('price',[$lowerLimit, $higherLimit]);
Ответ №3:
Ни один из вышеперечисленных вариантов не решил мою проблему, но мне удалось решить ее так
->when(is_numeric($request->search), function ($query) {
$query->orWhereBetween('price', [$request->search, $request->search 999]);
})
Ответ №4:
->whereBetween('price', [$request->search, $request->search 999])
Комментарии:
1. Пожалуйста, не публикуйте только код в качестве ответа, но также предоставьте объяснение того, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением, как правило, более полезны и более качественны, и с большей вероятностью привлекут внимание.