Rotas e Controller
[Finalizado Pelo Aluno]
Olá Equipe Especializa TI,
Tenho acompanhado o trabalho de vocês no Youtube e depois de assistir os videos de Laravel 5.3 e 5.5 resolvi colocar a mão na massa e contratar a assinatura do portal.
Estou criando um sistema próprio onde consegui realizar o INSERT, UPDATE e o DELETE com sucesso. Também criei uma listagem de registros conforme um único parametro de pesquisa chamado STATUS, que funciona perfeitamente.
Estou tendo dificuldades de criar uma tela com vários parametros de pesquisa. No caso seria um Form com metodo GET o qual o resultado da pesquisa respeitará os filtros selecionados.
Eu criei no controller uma uma function chamada "list"que recebe o filtro Status através do metodo GET. A url que chama esse controler é http://local.financial/admin/client/list/1 e funciona perfeitamente.
public function list(Request $request){
$status = addslashes($request->status);
$clients = DB::table('clients')
->select('id', 'nome_fantasia', ...)
->where('status', $status)
->paginate($this->totalPage);
return view('admin.client.list', compact('clients'));
}
Gostaria de aproveitar essa função "list" e agregar outros filtros de pesquisa. Assim sendo, o sistema teria checar se determinado filtro foi preenchido com um valor válido e aplicar na query sql.
Seria algo como:
if( isset($request->status) ){
if($request->status > 0){
->where('status', $status)
}
}
Agradeço o apoio.
Roberto
Olá, Roberto!
Tudo bem?
Primeiramente, quero te agradecer pela confiança. Saiba que é um prazer enorme lhe receber em nossa plataforma.
O Laravel é extremamente poderoso no quesito manipulação de banco de dados também.
O método where permite aplicar filtros condicionais baseados em parâmetros recebidos ou não. Para ficar mais fácil de entender, segue um exemplo prático:
public function list(Request $request)
{
$clients = DB::table('clients')
->select('id', 'nome_fantasia', ...)
->where(function($query) use ($request) {
if ($request->status > 0) {
$query->where('status', $request->status);
}
})
->paginate($this->totalPage);
return view('admin.client.list', compact('clients'));
}
Esse exemplo só vai aplicar o filtro where caso o parâmetro status o valor seja diferente maior que 0.
Olá Carlos,
Deu certo!
Agora consigo pesquisar utilizando vários parâmetros de pesquisa.
Surgiu outra dúvida. Como o LARAVEL trata possíveis ataques SQL Injection que poderão estar presentes nas informações REQUEST (GET, POST...)?
Atte.
O Laravel utiliza de forma transparente o PDO, portanto, isso garante que ataques como SQL Injection não prejudiquem a nossa aplicação Laravel.
Bacana.
Isso poupará muito trabalho. Obrigado
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!