Я пытаюсь добавить систему сортировки, выбрав поле на блейде. Я сделал сортировку цен по выбору, но не смог отфильтровать по регионам.
<form>
{{csrf_field()}}
<select name="sortbyprice">
<option selected>販売価格</option>
<option value="asc">最低価格</option>
<option value="desc">最大価格</option>
</select>
<select name="region">
<option value="tokyo">Tokyo</option>
<option value="osaka">Osaka</option>
<option value="kobe">Kobe</option>
</select>
<button type="submit">検索</button>
</form>
Сортировка по цене работает, но фильтр "регион" не работает. когда я выбираю город и нажимаю кнопку. Это не приносит мне подходящих результатов. Я думаю, что в контроллере, области запроса части я сделал некоторую ошибку.
public function search(Request $request)
{
$q = $request->q;
$sortbyprice = $request->sortbyprice;
$region = $request->region;
$paginationData = [
'q' => $q
];
$estates = \DB::table('allestates')
->where('lat', '!=', '')
->where('lng', '!=', '')
->where('price', '!=', '')
->where(function($query) use ($q) {
$query->where("building_name", "LIKE", "%" . $q . "%")
->orWhere("address", "LIKE", "%" . $q . "%")
->orWhere("company_name", "LIKE", "%" . $q . "%")
->orWhere("region", "LIKE", "%" . $q . "%");
})
->when($sortbyprice, function($query, $order) use ($paginationData) {
if(!in_array($order, ['asc','desc'])) {
$order = 'asc';
}
$paginationData['sortbyprice'] = $order;
return $query->orderBy('price', $order);
}, function($query) {
return $query->orderBy('price');
})
->when($region, function($query, $regionId) use ($paginationData) {
$paginationData['region'] = $regionId;
return $query->where('region_id', $regionId);
})
->paginate(8);
$paginationData = array_filter($paginationData);
return view("home", compact('estates', 'q','paginationData'));
}
Спасибо за любую помощь!