Convertendo dados do select para json Bom dia! Pessoal ,estou usando o exemplo do tutor para passar o resultado de uma consulta para o formato json, mas só consigo um único registro conforme o exemplo do tutor, gostaria de pegar todos os registros retornados da consulta. ...
WR
Convertendo dados do select para json  
Fechado
Bom dia!
Pessoal ,estou usando o exemplo do tutor para passar o resultado de uma consulta para o formato json, mas só consigo um único registro conforme o exemplo do tutor, gostaria de pegar todos os registros retornados da consulta.


 
  1. <?php
  2. TTransaction::open('projetox');
  3. // Load object
  4. $cidade_id = 4500;
  5. $estado_id = 24;
  6. $criteria = new TCriteria;
  7. $criteria->add(new TFilter('cidade_id', '=', $cidade_id));
  8. $criteria->add(new TFilter('estado_id', '=', $estado_id));
  9. $repository = new TRepository('Localajuda');
  10. $dados= $repository->load($criteria); //ASSIM NÃO FUNCIONA
  11. $dados= Localajuda::find(1);// ASSIM FUNCIONA Retornando 1 registro
  12. // if found
  13. if ($dados)
  14. {
  15. // show as JSON
  16. print_r( $dados->toJson() );
  17. }
  18. TTransaction::close();
  19. ?>


Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (11)


MG

Wilson
Qual a exception é apresentada na linha 12?
WR

Marcelo, dá esse erro
Fatal error: Call to a member function toJson() on array
IF

Vc tem que usar foreach:

 
  1. <?php
  2. if ($dados)
  3. {
  4. foreach ($dados as $json)
  5. {
  6. // show as JSON
  7. print_r( $json->toJson() );
  8. }
  9. }
  10. ?>
WR

Mas não é na linha 12 é na linha 19
Abraço
WR

Deu certo da forma que o Ivan postou.

Obrigado!!

IF

Vc pode estar uma variável para ir concatenando os valores assim:

 
  1. <?php
  2. $itens = '';
  3. if ($dados)
  4. {
  5. foreach ($dados as $json)
  6. {
  7. // show as JSON
  8. $itens .= $json->toJson() ;
  9. }
  10. }
  11. var_dump($itens);
  12. TTransaction::close();
  13. ?>

MG

Eu pensei que o problema estava no $criteria que poderia estar retornando um erro.
Mas a solução do Ivan está correta mesmo.
Que bom que funcionou.
Abraços
WR

Só mais uma dúvida , usando criteria eu consigo selecionar somente alguns específicos campos para passar para o formato json??
ou devo fazer um sql manual (select id,nome,endereco from localajuda)
Hoje eu não incomodo mais! rsrsrsrs

Abraços
IF

Wilson, não vi nenhuma forma a não ser com um sql manual mesmo. Ou se vc quiser trabalhar sem o sql, crie uma view com os campos que vc quer e carregue normalmente como se fosse um objeto, essa seria a minha escolha, veja esse tópico de como criar views e usar no Adianti, eu particularmente evito de usar sql manual no meu sistema.

www.adianti.com.br/forum/pt/view_879?relatorios-com-queries-complexa
MG

Wilson

Outra alternativa, aliás que eu uso quando preciso deste recurso seria:

 
  1. <?php
  2. public function getCoordenadorPorCentroDeCusto($centrocustoid) {
  3. try
  4. {
  5. TTransaction::open('workflow');
  6. $repository = new TRepository('Coordenador');
  7. $criteria = new TCriteria();
  8. $criteria->add(new TFilter('centrocustoid','=',$centrocustoid));
  9. $result = $repository->load($criteria);
  10. foreach ($result as $dados) {
  11. $this->id = $dados->id;
  12. $this->coordenador = $dados->coordenador;
  13. $this->diretor = $dados->diretor;
  14. $this->superintendente = $dados->superintendente;
  15. $this->gerente = $dados->gerente;
  16. $this->login = $dados->login;
  17. $this->dataatualizacao = $dados->dataatualizacao;
  18. }
  19. TTransaction::close();
  20. }
  21. catch (Exception $e)
  22. {
  23. print "Erro : " . $e->getCode() . " - Mensagem : " . $e->getMessage();
  24. }
  25. }
  26. ?>
WR

Obrigado pessoal pela grande ajuda de vocês, espero um dia poder retribuir a ajuda . Vou ter que estudar muito. Vocês são feras!!

Abraços