Laravel 5.1对搜索过滤器的结果进行排序

时间:2016-01-30 22:33:40

标签: sorting filter laravel-5

我搜索了网站,我可以选择各种过滤器。这已经有效了。他正确地返回并进行分页。

示例:

/empresas?estado=2&tipo=3&page=2

问题是当我点击订购时(一个表格选择)。

它不维护当前的URL,它只是:

/empresas?ordenar=nome

应该是这样的:

/empresas?estado=2&tipo=3&ordenar=nome&page=3

我做了一个附加内容,例如分页。

但它不起作用。

控制器:

$estados = DB::table('estados')->orderBy('nome', 'asc')->get();
$tipos = DB::table('tipos')->orderBy('nome', 'asc')->get();

$word = Input::get('query');
$ordenar = Input::get('ordenar');
$estado = Input::get('estado');
$tipo = Input::get('tipo');

$query = Empresas::with('usuario')
    ->with('estado');

if($word)
    $query->where('descricao', 'LIKE', '%' . $word . '%')
        ->orWhere('carta', 'LIKE', '%' . $word . '%');

if($estado)
    $query->whereIn('estado_id', $estado);

if($tipo)
    $query->where('tipo_id', $tipo);

if($ordenar)
    $query->orderby($ordenar, 'asc');

$empresas = $query->orderBy('updated_at', 'desc')->paginate(18);

return view("pages.empresas.index")
    ->with('estados', $estados)
    ->with('tipos', $tipos)
    ->with(compact('empresas', 'word', 'ordenar', 'estado','tipo'));

在视图中:

我做了一个foreach正常地带领域并且phaco追加渲染已经有效的

<center>{!! str_replace('/?','?', $empresas->appends(Input::query())->render()) !!}</center>

我有一个表格可以通过错误排序

 <form action="/empresas" method=get>
     <select class="form-control m-b" name="ordenar" onchange="this.form.submit()">
     <option value="" disabled="" selected="">Ordenar por...</option>
     <option value="nome">Nome</option>                                                       
     </select>
</form>

1 个答案:

答案 0 :(得分:0)

你应该尝试通过使用雄辩的范围/关系来避免这些令人讨厌的if语句。

您的错误很简单,您需要将您希望在查询字符串中看到的其他表单元素添加到表单中。如果要使用隐藏字段。您只看到一个参数,因为表单中只有一个输入。