我正在尝试向索引页面添加简单的排序,但是当我尝试包含搜索结果或向URL添加其他查询时,我陷入了冲突。这是我目前拥有的:
控制器
// Search default
if ($request->search == null) {
$search = '';
} else {
$search = $request->search;
}
// Sort default
if ($request->sort == null) {
$sort = 'asc';
} else {
$sort = $request->sort;
}
$doctors = Doctor::orderBy('last_name', $sort)
->where('first_name', 'LIKE', '%' . $search . '%')
->orWhere('last_name', 'LIKE', '%' . $search . '%')
->orWhere('type', 'LIKE', '%' . $search . '%')
->orWhere('npi', 'LIKE', '%' . $search . '%')
->orWhere('license', 'LIKE', '%' . $search . '%')
->orWhere('dea', 'LIKE', '%' . $search . '%')
->paginate(10);
return view('doctors.index')->with('doctors', $doctors);
刀片
{{ Form::open(['method' => 'GET']) }}
{{ Form::text('search', null, ['class' => 'form-control form-control-sm', 'placeholder' => 'Search Doctors...']) }}
{{Form::submit('Search', ['class' => 'btn btn-primary btn-sm'])}}
{{ Form::close() }}
@if(Request::input('sort', 'asc') == 'asc')
<a href="?sort=desc">Name</a>
@else
<a href="?sort=asc">Name</a>
@endif
现在,?search=
和?sort=
将独立工作。但是,如果我尝试搜索某些内容,然后对结果进行排序,则会清除搜索请求。我还想添加其他列,例如“许可证编号”,“地址”等,以便人们不仅可以按“名称”进行排序。但是,当我更改请求以添加?sortBy=
之类的<a href="?sortBy=name?sort=desc">Name</a>
时,排序方向不再起作用。
答案 0 :(得分:0)
URL查询参数需要用&
而不是?
分隔,像这样:
<a href="?sortBy=name&sort=desc">Name</a>
答案 1 :(得分:0)
您需要将查询附加到$doctors
:
$doctors->addQuery('sort', request()->get('sort'))->addQuery('sortBy', request()->get('sortBy'))
编辑:
似乎api已更改为更高版本,因此请使用appends
:
->appends(['sort' => request()->get('sort'), 'sortBy' => request()->get('sortBy')])