Laravel 5 improve filter

2

I created a filter in my view index, when I put something inside one of the filter inputs it enters the ifs but I think it is not good in this way, does anyone know in any better way?

public function index()
{
    $usuariosFiltro = null;
    $estadoFiltro = null;
    $cidadeFiltro = null;
    $statusFiltro = null;

    if(Input::has('Usuario_nome'))
    {
        $usuariosFiltro = Input::get('Usuario_nome');
    }

    if(Input::has('Usuario_cidade'))
    {
        $cidadeFiltro = Input::get('Usuario_cidade');
    }

    if(Input::has('Usuario_status'))
    {
        $statusFiltro = Input::get('Usuario_status');
    }

    $usuarios = Usuario::filtrarUsuario($usuariosFiltro)->filtrarCidade($cidadeFiltro)->filtrarStatus($statusFiltro)->paginate();

    $estados = Estado::orderBy('uf')->lists('uf', 'est_id');

    return view('usuarios.index', compact('usuarios', 'estados'));
}
    
asked by anonymous 20.07.2015 / 20:27

1 answer

-1

I did it better:

public function index()
{
    $usuariosBuilder = new Usuario();

    if(Input::has('Usuario_nome'))
    {
        $usuariosBuilder = $usuariosBuilder->where('Usuarios.nome', 'like', '%'.Input::get('Usuario_nome').'%');
    }

    if(Input::has('Usuario_est_id'))
    {
        $usuariosBuilder = $usuariosBuilder->where('Usuarios.est_id', '=', Input::get('Usuario_est_id'));
    }

    if(Input::has('Usuario_cidade'))
    {
        $usuariosBuilder = $usuariosBuilder->where('Usuarios.cidade', 'like', '%'.Input::get('Usuario_cidade').'%');
    }

    if(Input::has('Usuario_status'))
    {
        if(Input::get('Usuario_status') == 1)
        {
            $usuariosBuilder = $usuariosBuilder->whereNull('Usuarios.deleted_at');
        }
        elseif(Input::get('Usuario_status') == 2)
        {
            $usuariosBuilder = $usuariosBuilder->onlyTrashed();
        }
    }

    $usuarios = $usuariosBuilder->paginate();

    $estados = Estado::orderBy('uf')->lists('uf', 'est_id');

    return view('usuarios.index', compact('usuarios', 'estados'));
}

That's the tip for anyone going through the same problem.

    
21.07.2015 / 23:38