Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Query builder - Consulta Laravel

estou fazendo os principais cursos da alura, voltado para laravel, e fiquei um pouco confuso quanto a fazer consultas em minha base, estou trabalhando em um projeto onde me deparo com diversas consultas, com métodos Join, Left, Right, Where, resumindo, vejo que em partes o query builder trata as query de outra maneira que não estou familiarizado, estou habituado a construir toda minha query através de SQL e posteriormente eu tenho um método que fica responsável por interpretar a SQL, alguém poderia me dar um norte?

5 respostas

Oi Keverson, tudo bem? Não sei se entendi bem o problema. Quer tentar me explicar melhor pra ver se consigo te ajudar?

Se for o que estou pensando vc está falando do ORM do Laravel.

Acredito que deseja algo do tipo

$sql = "select * fom a join b on a.idb = b.id left join c on a.idc = c.id where  .... 

$pdo->execute($sql);

Olá, Keverson.

Não sei se entendi bem sua dúvida, mas pelo que entendi você tem códigos prontos (inclusive SQL) e quer saber como organizar seu projeto em Laravel para executá-las. É isso?

Quando se utiliza um ORM (como Eloquent ou Doctrine) a intenção é não precisar mais escrever SQL. Logo, você pode refatorar seu código para utilizar o ORM e descartar suas queries. Caso prefira se manter com o SQL, você pode criar classes de repositório (classes que você vai utilizar para chamar os métodos que realizam as consultas), e nesses repositórios, utilizar o método DB::select.

Aguardo um retorno pra saber se era essa mesmo sua dúvida.

Sim vinicius, mas como você disse quando se utiliza o eloquent a intenção é não se trabalhar mais com a SQL. através dos cursos que tenho feito aqui na alura, tudo que foi passado em relação aos CRUD, gira em torno do DB:select, DB::delete, DB:update, etc... porém no projeto que tenho trabalhado percebi que o desenvolvedor ele se valeu de métodos existentes em uma classe chamada Builder o que até então não vi em nenhum curso até o momento.

por exemplo:

public function getUltimosConteudos(ConteudoRepository $conteudos) {

$query = $this->newQuery();
$query->distinct();
$query->select('conteudos.*');
$query->from('conteudos');
$query->where('conteudos.conteudo_publico', 1);
$query->orderBy('conteudos.conteudo_id', 'DESC');
}

esse é um método que eu mesmo criei, trabalhando em cima dessa classe Builder, quando abri este questionamento estava tentando entender porque o desenvolvedor trabalhou dessa forma e não, por exemplo, da forma como é passada nos cursos, pois, isso que me deixou em dúvida, porém com algumas pesquisa consegui assimilar como o antigo desenvolvedor trabalhou.

solução!

Entendi sua dúvida, Keverson.

Criar através do Query Builder só tira um pouco do peso de escrever um SQL. Na prática não muda tanto se você souber SQL.

Se quiser mais detalhes, pode dar uma lida melhor aqui: https://laravel.com/docs/5.8/queries

Infelizmente em um curso não dá pra falar de todas as features de um framework, então a intenção do treinamento é realmente te dar um norte, entende?

Espero que consiga sanar suas dúvidas, e se precisar, pode continuar postando aqui no fórum.

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software