Symfony 3.4 - Valores numéricos trazidos no select vem diferente do valor quando consulto diretamente no banco de dados

13 views
Skip to first unread message

MIZAEL CARLOS

unread,
Jun 16, 2020, 8:40:17 PM6/16/20
to Symfony Brasil
Exemplo:

Quando consulto no banco de dados os valores vem assim:

40,13 35,31 12,00
19,80 17,12 13,53
22,86 20,87 8,71
30,33 26,69 12,00

Quando faço a consulta  e escrevo o resultado em um arquivo csv vem assim:

401.300 353.100 120.000
198.000 171.200 135.300
228.600 208.700 87.100
303.300 266.900 120.000

Quero que venha igual o resultado do banco de dados , alguém pode me ajudar?

Segue o código:

public function indexAction()
    {
$sql = "select 
   PRE.DE price,
   PRE.POR discount_price,
   PRE.DESCONTO discount,
  from v_ecommerce_produtos pro
where est.cd_emp = 1
   and est.cd_filial = 24
   and ds_ecommerce <> ''";
   
$stmt = $this->getDoctrine()->getEntityManager()->getConnection()->prepare($sql);
$stmt->execute();
$resultados = $stmt->fetchAll();
fputcsv($out, $csv_cabecalho, ';');
foreach ( $resultados as $resultado ) 
    {
  fputcsv($out, $resultado, ';');
    }
    fclose( $out );
return $this->render('arquivo_rappi/index.html.twig');
}

Raphael

unread,
Jun 17, 2020, 7:22:34 AM6/17/20
to symfo...@googlegroups.com
Bom dia Mizael. Tudo bem?

Eu também já tive alguns problemas com formatos de números e o Symfony.
Uma coisa que me auxilia a resolver grandes parte deles é o grouping https://symfony.com/doc/current/reference/forms/types/number.html#grouping
O Symfony ajuda bastante quando se trata de internacionalização e isso de começo, pode atrapalhar. Mas quando você busca um sistema multi idiomas isso acaba sendo fundamental.
Isso vale pra quando você está utilizando os forms https://symfony.com/doc/current/forms.html do Symfony e configura devidamente a linguagem do seus sistema https://symfony.com/doc/current/translation.html#configuration
Uma dica que dou também, é sobre o uso de raw SQL e Doctrine. Acredito que vale da uma aprofundada quanto o uso de https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/query-builder.html
Pode parecer ruim a primeiro momento, mas a chance de gostar depois é grande. Além de ter uma camada de abstração que lhe proporciona uma flexibilidade de banco de dados.
Veja como poderia ficar sua query:

<?php

$qb->select(array('p.de', 'p.por', 'p.desconto'))
->from('VEcommerceProduct', 'p')
->join('p.Company', 'est', 'WITH', 'est.status = ?1')
->where('est.cd_emp = :cd_emp
AND est.cd_filial = :cd_filial
AND p.ds_ecommerce <> :ds_ecommerce')
->orderBy('u.name', 'ASC')
->setParameters(array(
'identifier' => 1,
'cd_filial' => 24,
'ds_ecommerce' => ''
));

--
You received this message because you are subscribed to the Google Groups "Symfony Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to symfony-pt+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/symfony-pt/e727ea97-9970-4c23-9e57-d481cb435ec1o%40googlegroups.com.


--
Raphael Almeida Araújo
Homepage: http://me.vivace-softwares.com.br/

MIZAEL CARLOS

unread,
Jun 19, 2020, 1:19:48 PM6/19/20
to symfo...@googlegroups.com
Rafael então eu fazendo a internacionalização e mudando a forma de fazer a consulta , trocando de SQL nativo para esse query builder do dictrine os valores viriam correto?

Por que acho estranho vim 400.150 em vez de 40,15 .

You received this message because you are subscribed to a topic in the Google Groups "Symfony Brasil" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/symfony-pt/RcKSFGI0Xdo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to symfony-pt+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/symfony-pt/CAP5xMMrbPoMA3ZmqvFxn7o1iQ4Tcnmjr5H0WsBQ9FxzOa7DV7w%40mail.gmail.com.

Raphael

unread,
Jun 19, 2020, 2:50:39 PM6/19/20
to symfo...@googlegroups.com
Fala Mizael. Tudo 100%?

Na verdade estou achando que estão sendo armazenados errados. não acho que a falta do query builder possa estar afetando isso. Por isso sugeri a alteração no formulário.
Mas você pode estar confirmando consultando o banco com alguma ferramenta pra isso tipo https://dbeaver.io/

Abraços e boa sorte. Se lhe puder ser útil é só chamar.

MIZAEL CARLOS

unread,
Jun 19, 2020, 3:15:26 PM6/19/20
to symfo...@googlegroups.com
E ai Raphael, tudo em paz.

O armazenamento errado não está, por que quando consulto diretamente no sql server vem direitinho ex: 40,15, mas não estou usando forms, apenas fiz esse script direto no action e apenas executa url ai na execução da ação é feito a geração do arquivo .csv.

Poderia me dá uma luz de como resolver isso com form?  





--
Att. Professor Mizael Carlos      
Whatsapp (86) 98855-4455
Telefone (86) 99819-0679
Graduado em Ciência da computação - UESPI

Raphael

unread,
Jun 19, 2020, 4:33:47 PM6/19/20
to symfo...@googlegroups.com
A melhor fonte de consulta é a oficial mesmo https://symfony.com/doc/current/forms.html
Mas eu não sei não heim. Não entendo muito bem de SQL Server, mas no inglês a separação de milhar que é ','. Não deveria estar vindo ',' quando você consulta no SQL. Normalmente no SQL vem só '.' e a separação de milhar é desconsiderada.

MIZAEL CARLOS

unread,
Jun 22, 2020, 3:18:52 PM6/22/20
to Symfony Brasil
O Rafael ,

estou tentando usar RAW SQL e doctrine , mas ao tentar criar entidades usando engenharia reversa com o comando abaixo:

php bin/console doctrine:mapping:import --force AppBundle xml --em=default


Dá a seguinte mensagem de error:


In AbstractPlatform.php line 423:

  Unknown database type xml requested, Doctrine\DBAL\Platforms\SQLServer2012Platform may not support it.

Como resolver?

Raphael

unread,
Jun 22, 2020, 7:00:08 PM6/22/20
to symfo...@googlegroups.com
Fala Mizael.

Lendo a mensagem e buscando no stack overflow (https://stackoverflow.com/questions/46466472/unknown-database-type-json-requested-doctrine-dbal-platforms-postgresqlplatform) parece que o erro está relacionado com o tipo de alguma coluna no banco de dados que não tem compatibilidade com o Doctrine. Mas nunca cheguei a usar uma coluna do tipo 'xml'.

A exceção acontece aqui https://github.com/doctrine/dbal/blob/18a053ad016207a66937f78f367f900c771aed94/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php#L440 Se você tiver algum debug configurado talvez consiga depurar, ou simplesmente usar algo como o https://www.php.net/manual/en/function.var-dump.php

Talvez a engenharia reversa não seja a melhor alternativa pra você. Isso se além dessa coluna, você tiver outra. Vale ver essa parte aqui https://symfony.com/doc/3.4/doctrine.html#add-mapping-information onde você consegue gerar seus modelos usando PHP, XML ou YAML.

O Doctrine também lhe possibilida mapear tipos customizados de coluna https://www.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/custom-mapping-types.html

--
You received this message because you are subscribed to the Google Groups "Symfony Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to symfony-pt+...@googlegroups.com.

Marcelo Bento

unread,
Jun 25, 2020, 10:24:21 AM6/25/20
to symfo...@googlegroups.com
Mizael,

Sei que no oracle temos a opção de alterar o formato da data, hora etc através do comando ALTER SESSION SET NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' 
Veja se na ferramenta que você faz as consulta direto no banco não está setado algo referente ao SQLServer.

Veja se no seu pacote instalado da doctrine na vendor\doctrine\dbal\lib\Doctrine\DBAL\Event\Listeners\ tem alguma mudança para o banco que você está usando.

Marcelo Bento

unread,
Jun 25, 2020, 10:33:09 AM6/25/20
to symfo...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages