[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Aurélio Oliveira
Criador Aurélio Oliveira 05/03/2019

Boa tarde Carlos,

Estou desenvolvendo um projeto aparte das aulas para evoluir e cheguei em um ponto onde tenho a necessidade de fazer essa consulta:$resultado = DB::select("

SELECT 

a.id,

a.abertura,

s.nome,

u.name,

a.status,

a.imagem

 

FROM `atendimentos` a

left join `users`u on u.id = a.user_responsavel_id

left join `setors` s on s.id = a.setor_id

WHERE a.user_responsavel_id = :param1 and a.setor_id = :param2 and a.status = :param3

order by a.id desc 

"

,

[

"param1" => $idResponsavel,

"param2" => auth()->user()->setor_id,

"param3" => $status

]

);

 

A cunsulta esta funcionando o problema é que tanto o parametro1 quanto o parametro3 podem ser mudados opcionalmente para todos ( * ). Ou seja a pessoa pode querer listar somente um status específico ou todos os status, da mesma forma o responsável ($idResponsavel), somente um ou todos.

Como fazer para que os parametros fiquem dinamicamente preenchidos? Ou existe uma forma de indicar que um parametro seja * por exemplo?

 

Mais uma vez muito obrigado.

 

Manager Carlos Ferreira 05/03/2019

Olá, Aurélio!

Não recomendo que faça a consulta dessa forma, mas sim, explore os recursos do Eloquent e trabalhe com relacionamentos de tabelas, a fim de obter um resultado mais produtivo.

Faça esse curso, certamente ele vai te ajudar a elevar a qualidade das suas consultas ao banco de dados: https://academy.especializati.com.br/curso/laravel-relacionamentos-tabelas-gratis

Porque se usar o Eloquent, ou até mesmo o Query Builder é possível fazer filtros (where) dinamicamente, assim:
->where(function($query) use ($variavel) {
    if ($variavel) {
        $query->where('nomecoluna', '=', $variavel);
    }
})

Carlos Ferreira
Criador Aurélio Oliveira 05/03/2019

Obrigado Carlos,

 

Tem algum exemplo com um where com um campo data inicio, data final vindo de um formulário de filtro, sendo que esses campos poderiam ficar em branco para filtrar por qualquer período?

 

Já mudei todas as minhas consulta utilizando o Eloquent bem como Query Builder para aproveitar melhor os recursos.

Aurélio Oliveira
Manager Carlos Ferreira 05/03/2019

Acredito que fez bem usar o Eloquent e o Query Builder.

É possível, seguindo mais ou menos a mesma linha que passei no último exemplo, veja um exemplo:
->where(function($query) use ($request) {
    if ($request->data_inicio && $request->data_final) {
        $query->whereBetween('date', [$request->data_inicio, $request->data_final]);
    }
})

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!