Laravel добавить фильтр сортировки по результатам поиска с помощью параметра Выбрать порядок по скорости по убыванию - PullRequest
1 голос
/ 09 мая 2020

Я не могу добавить выбор сортировки в результаты поиска. Я не могу заставить это работать. Я добавил оператор if для сортировки по оператору select, например:

Я пытался добавить оператор if для сортировки вручную путем выбора, но результаты не меняются.

Я что-то упускаю или как это исправить?

public function search(Request $request){
    $cityKey = $request->cityKey;
    $key = $request->key;


        $doctors = Doctor_list::where('speciality_title', 'LIKE', '%' . $key . '%')->
        where('location', 'LIKE', '%' . $cityKey . '%')->
        orWhere('doctors_name', 'LIKE', '%' . $key . '%')->
        where('location', 'LIKE', '%' . $cityKey . '%')->
        orWhere('speciality_type', 'LIKE', '%' . $key . '%')->
        where('location', 'LIKE', '%' . $cityKey . '%')->get();


    If ($request->get('sortBy') === 'rate'){
        dd($doctors->orderBy('rate', 'desc'));
    }
    return view('healthflex.search', compact('doctors'));
}

<select name="sortBy" class="select"> //THIS IS SELECT STATEMENT
    <option>choose</option>
    <option class="sorting" value="rate}">rate</option>
    <option class="sorting">Popular</option>
    <option class="sorting">Ohirgi</option>

1 Ответ

0 голосов
/ 09 мая 2020

Попробуйте это

$doctors = Doctor_list::where('speciality_title', 'LIKE', '%' . $key . '%')->
    where('location', 'LIKE', '%' . $cityKey . '%')->
    orWhere('doctors_name', 'LIKE', '%' . $key . '%')->
    where('location', 'LIKE', '%' . $cityKey . '%')->
    orWhere('speciality_type', 'LIKE', '%' . $key . '%')->
    where('location', 'LIKE', '%' . $cityKey . '%')
    ->orderBy($request->input('sortBy', 'id'), 'desc');

, если вы даже не применяете сортировку, если значение sortBy не передано в запросе, вы можете сделать вместо этого

    ->where('location', 'LIKE', '%' . $cityKey . '%')
    ->when($sortBy = $request->input('sortBy'), function($query) use($sortBy){
        $query->orderBy($sortBy , 'desc');
    });

Теперь вы можете вернуть результат

 return view('healthflex.search', compact('doctors'));
...