Filter with paging - Laravel

Asked

Viewed 649 times

2

Good night,

The filter itself appears right, but when you go to another page (by paging), you lose this filter.

I can’t find the problem, someone can help me?

My route:

Route::any('/recentes-pesquisa','ActionsRecentsController@recentes')->name('recentes.pesquisa');

Controller

 $dataForm = $request->except('_token');           
    if (isset($dataForm['num'])){
            $buscaNotas = DB::table('notas')->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')->join('competencia','notas.comp_nota','=','competencia.cd_competencia')->select('notas.*', 'status_notas.*','prestador.*','competencia.*')
        ->where('notas.nro_nota', '=', $dataForm['num'])->paginate(10); 
        }
        elseif((isset($dataForm['num'])and ($dataForm['prestador']))){
         $buscaNotas = DB::table('notas')->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')->join('competencia','notas.comp_nota','=','competencia.cd_competencia')->select('notas.*', 'status_notas.*','prestador.*','competencia.*')
        ->where('notas.nro_nota', '=', $dataForm['num']) 
        ->where('prestador.nm_prestador','like UPPER',$dataForm['prestador'])->paginate(10);     
        }elseif(isset($dataForm['data_emissao'])){
         $buscaNotas = DB::table('notas')->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')->join('competencia','notas.comp_nota','=','competencia.cd_competencia')->select('notas.*', 'status_notas.*','prestador.*','competencia.*')   
        ->whereBetween('notas.dt_emissao_nota',[$dataForm['data_emissao'],$dataForm['data_emissao']])->paginate(10);    
        }


     else{    //se n selecionou nenhum filtro... 
     $buscaNotas = DB::table('notas')
        ->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')
        ->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')
        ->join('competencia','notas.comp_nota','=','competencia.cd_competencia')
        ->select('notas.*', 'status_notas.*','prestador.*','competencia.*')
        ->where('notas.comp_nota', '=', 1)
        ->paginate(10);
     }

      return view('\recent')->with('notas_recentes', $buscaNotas)
                            ->with('dataForm',$dataForm);

View:

  {{ $notas_recentes->appends(['dataForm' => $dataForm])->links() }}

The URL looks like this: http://127.0.0.1:8000/recent-search? _token=I0bg4fxmli10u2bfum6zztwvbui3oobhoafykutq&num=&data_outgoing=2018-08-12&comp=&provider=&status=

When you click on the second page, it looks like this: http://127.0.0.1:8000/recent-search? dataForm%5Bdata_emitted%5D=2018-08-12&page=2

1 answer

3

I solved my problem by switching on my view:

  {{ $notas_recentes->appends(['dataForm' => $dataForm])->links() }}

To:

{{ $notas_recentes->appends($dataForm)->links() }}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.