Laravel 5 improve filter

Asked

Viewed 781 times

2

I created a filter in my view index, when I put something inside one of the filter inputs enters ifs but I think it’s not good this way, someone knows somehow better?

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'));
}

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'));
}

Here is the tip for those who go through the same problem.

Browser other questions tagged

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