Всем доброго дня! Не получается сделать фильтр от минимального до максимального значения. У меня есть контроллер в котором я сравниваю цену с введенными значениями в инпуты на view:
Контроллер
$postValues = Post::where(function($query)
{
if (request()->has('min_value')) {
request()->get('min_value');
} else {
$min_value = null;
}
if (request()->has('max_value')) {
request()->get('max_value');
} else {
$max_price = null;
}
if(isset($min_value) && isset($max_value))
{
$query->where('price','>=',$min_value);
$query->where('price','<=',$max_value);
}
})->get()->toArray();
view()->share('postValues', $postValues);
View
<div class="block-title has-arrow sidebar-header">
<form role="form" class="form-inline" action="{{ $fullUrlNoParams }}" method="GET">
<div class="form-group col-sm-4 no-padding">
<input type="text" placeholder="min year" id="min_value" name="min_value" class="form-control"
value="{{request()->get('min_value')}}">
</div>
<div class="form-group col-sm-4 no-padding">
<input type="text" placeholder="max year" id="max_value" name="max_value" class="form-control"
value="{{request()->get('max_value')}}">
</div>
<button class="btn btn-default pull-right btn-block-xs" type="submit">{{ t('GO') }}</button>
</form>
</div>
Ничего не работает. Я новенький и уверен, что-то не так сделал или вообще не так делаю. Подскажите в чем проблема.
Вы проверяете наличие цены, но забыли ее потом присвоить в переменные:
$min_value = request()->get('min_value');
$max_value = request()->get('max_value');
Код целиком:
$postValues = Post::where(function($query)
{
if (request()->has('min_value')) {
$min_value = request()->get('min_value');
} else {
$min_value = null;
}
if (request()->has('max_value')) {
$max_value = request()->get('max_value');
} else {
$max_price = null;
}
if(isset($min_value) && isset($max_value))
{
$query->where('price','>=',$min_value);
$query->where('price','<=',$max_value);
}
})->get()->toArray();
А в целом, как вам уже подсказали в комментах, лучше через whereBetween
Попробуйте
$postValues = Post::query();
$min_value = null;
$max_price = null;
if (request()->get('min_value')) {
$min_value = request()->get('min_value');
}
if (request()->get('max_value')) {
$max_price = request()->get('max_value');
}
if($min_value && $max_price) {
$postValues = $postValues->whereBetween('price', [$min_value, $max_price])
}
$postValues = $postValues->get()->toArray();
view()->share('postValues', $postValues);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь разобраться в Google Sheets API на PHP 7В общем, как правильно заполнить range, чтобы получилось так?
Есть 'строка' в конце которой стоит Тег <br> нужно сделать перенос строки при двух переменных, отображение которых зависит от условия if
Написал такой код для пангинации, но он почему выводит кракозябры вместо текстаКак это исправить?