У меня есть таблица «Свойства», и я храню там цену, город, ванные комнаты, спальни и пригород.
Итак, я знаю, что хочу выполнить поиск по этим полям.
ЕслиЯ ищу только по пригороду, это работает, если я ищу по типу свойства, это также работает, но при попытке выбрать min_price или / и max_price, ванные комнаты и спальни, я не получаю желаемый результат.
Мой контроллервыглядит следующим образом:
public function search_page(Request $request)
{
// validation ...
$query = Property::query();
if ($city = $request->input('city') ?? '')
{
$query->where('city', $city)
->orWhere('suburb', $city);
}
if ($type = $request->input('type') ?? '')
{
$query->where('type', $type);
}
// if none of them is null
if (! (is_null($request->input('min_price')) && is_null($request->input('max_price')))) {
// fetch all between min & max values
$query->whereBetween('price', [$request->input('min_price'), $request->input('max_price')]);
}
// if just min_price is available (is not null)
elseif (! is_null($request->input('min_price'))) {
// fetch all greater than or equal to min_price
$query->where('price', '>=', $request->input('min_price'));
}
// if just max_value is available (is not null)
elseif (! is_null($request->input('max_price'))) {
// fetch all lesser than or equal to max_value
$query->where('price', '<=', $request->input('max_price'));
}
$properties = $query->orderBy('id', 'asc')->paginate(9);
return view('pages.search', compact('properties'));
}
И ниже находятся поисковые запросы:
{!! Form::open(['method' => 'GET', 'action'=>'AdminPropertyController@search_page']) !!}
<div class="row flex wrap">
<div class="col-sm-10">
<div class="search-input">
{!! Form::text('city', null, ['class'=>'form-controla', 'placeholder'=>'Search for area,city, or suburb']) !!}
</div>
<div class="select-boxes">
{!! Form::select('type', [''=>'Type of property'] + ['apartment'=>'Apartment', 'house'=>'House', 'plot'=>'Plot', 'smallholding'=>'Smallholding', 'commercial'=>'Commercial', 'townhouse'=>'Townhouse'], null, ['class'=>'form-']) !!}
{!! Form::select('min_price', [''=>'Minimum'] + [1=>'1', 20=>'20'], null, ['class'=>'form-']) !!}
{!! Form::select('maxprice', [''=>'Maximum'] + [1=>'1', 20=>'20'], null, ['class'=>'form-']) !!}
{!! Form::select('bedrooms', [''=>'Bedroom'] + [2=>'1+', 3=>'2+'], null, ['class'=>'form-']) !!}
{!! Form::select('bathrooms', [''=>'bathroom'] + [2=>'1+', 3=>'2+'], null, ['class'=>'form-']) !!}
</div>
</div>
<div class="col-sm-2">
{!! Form::submit('Search', ['class'=>'search bg-brown']) !!}
<button class="clear-filter button">Clear Filter</button>
</div>
</div>
{!! Form::close() !!}
Как мне сделать, чтобы мой поиск работал правильно?