Красноречивый запрос Laravel, где-как

#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. Пожалуйста, не публикуйте только код в качестве ответа, но также предоставьте объяснение того, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением, как правило, более полезны и более качественны, и с большей вероятностью привлекут внимание.