Query SQL para Doctrine2.

16 views
Skip to first unread message

Gustavo Villela Goulart

unread,
Apr 9, 2018, 9:36:10 AM4/9/18
to Zend Framework Brasil
Olá amigos, bom dia.

Alguém conseguiria me ajudar a converter essa query para uma consulta no doctrine?

 Tenho 3 Entity que são 3 tabelas no meu DB

  Application\Model\Servico
  Application\Model\Carro
  Application\Model\Tipo_Carro

 A query que estou usando direto no DB é essa:

 SELECT
     TIPO_CARRO.DESCRICAO,
     SUM(SERVICO.QUANT_CARRO) AS QUANTIDADE
FROM
     CARRO CARRO INNER JOIN SERVICO SERVICO ON CARRO.IDCAR = SERVICO.IDCAR
     INNER JOIN TIPO_CARRO TIPO_CARRO ON CARRO.TIPO_CARRO_ID_TIPO_CARRO = TIPO_CARRO.ID_TIPO_CARRO
WHERE
     SERVICO.DATA_INICIO BETWEEN '2018-01-01' AND '2018-01-20'
    
GROUP BY TIPO_CARRO.DESCRICAO

 O resultado dessa query é o seguinte:

   VAN   138
   EXECUTIVO  234
   MICRO  100

 Alguém pode ajudar?

 Obrigado.

Andre Eppinghaus

unread,
Apr 9, 2018, 9:40:00 AM4/9/18
to zfbr...@googlegroups.com
Em alguns momentos eu uso o sql direto no banco, segue um exemplo:
  $sql = "
 SELECT
     TIPO_CARRO.DESCRICAO,
     SUM(SERVICO.QUANT_CARRO) AS QUANTIDADE
FROM
     CARRO CARRO INNER JOIN SERVICO SERVICO ON CARRO.IDCAR = SERVICO.IDCAR
     INNER JOIN TIPO_CARRO TIPO_CARRO ON CARRO.TIPO_CARRO_ID_TIPO_CARRO = TIPO_CARRO.ID_TIPO_CARRO
WHERE
     SERVICO.DATA_INICIO BETWEEN '2018-01-01' AND '2018-01-20'
     
GROUP BY TIPO_CARRO.DESCRICAO
           ";
        
        $registros =  $this->getEm->getConnection()->prepare($sql);
        $registros->execute() ;
               
        return $registros->fetchAll();

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-unsubscribe@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR
---
Você recebeu essa mensagem porque está inscrito no grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para zfbrasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Gustavo V. Goulart

unread,
Apr 9, 2018, 11:21:24 AM4/9/18
to zfbr...@googlegroups.com
Fala Andre, obrigado pela resposta.

Cara, dessa maneira ele não devolve um objeto, ele devolve um array, to
certo?

Em Seg, 2018-04-09 às 10:39 -0300, Andre Eppinghaus escreveu:
> Em alguns momentos eu uso o sql direto no banco, segue um exemplo:
>   $sql = "
>  SELECT
>      TIPO_CARRO.DESCRICAO,
>      SUM(SERVICO.QUANT_CARRO) AS QUANTIDADE
> FROM
>      CARRO CARRO INNER JOIN SERVICO SERVICO ON CARRO.IDCAR =
> SERVICO.IDCAR
>      INNER JOIN TIPO_CARRO TIPO_CARRO ON
> CARRO.TIPO_CARRO_ID_TIPO_CARRO = TIPO_CARRO.ID_TIPO_CARRO
> WHERE
>      SERVICO.DATA_INICIO BETWEEN '2018-01-01' AND '2018-01-20'
>      
> GROUP BY TIPO_CARRO.DESCRICAO
>            ";
>         
>         $registros =  $this->getEm->getConnection()->prepare($sql);
>         $registros->execute() ;
>                
>         return $registros->fetchAll();
>
> Em 9 de abril de 2018 10:36, Gustavo Villela Goulart <gvillela7@gmail

Andre Eppinghaus

unread,
Apr 9, 2018, 11:25:13 AM4/9/18
to zfbr...@googlegroups.com
Sim, neste modelo só devolve um array não tendo como usar os métodos get e set dos atributos da tabela.

Aí, é uma questão de escolha. No meu código muitas consultas eu o usei o padrão do doctrine em outras "mais elaboradas" optei por este modelo.

abs

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-unsubscribe@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Zend Framework Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para zfbrasil+unsubscribe@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Carlos Valter Santos Ferreira

unread,
Apr 10, 2018, 8:02:17 AM4/10/18
to Zend Framework Brasil
Faço como o André falou, em consultas mais elaboradas trabalho com array.

Mas ainda assim dá para usar os objetivos, só q vc terá q alimentar os sets e gets manualmente. Com foreach por exemplo.

Derlandy Belchior

unread,
Apr 10, 2018, 11:22:24 AM4/10/18
to zfbr...@googlegroups.com
Gustavo,

Se vc precisa apenas das quantidades e não há necessidade de manipular os objetos, acho que usar Native Query é a melhor opção.

Usando DQL para resultados de funções agregadas haverá perda de performance devido ao carregamento de muitos objetos de forma desnecessária.

Derlandy Belchior
Web Developer

Vitória-ES
Ttwitter: @derlandyb

Em 10 de abril de 2018 09:02, Carlos Valter Santos Ferreira <carlos...@gmail.com> escreveu:
Faço como o André falou, em consultas mais elaboradas trabalho com array.

Mas ainda assim dá para usar os objetivos, só q vc terá q alimentar os sets e gets manualmente. Com foreach por exemplo.
Reply all
Reply to author
Forward
0 new messages