Serviço rest Bom dia, estou usando o serviço rest do adianti e estou com dificuldade para trazer informações da classe associada. Tenho duas classes: Resumo e ResumoDetalhe ( 1 resumo tem vários detalhes) No retorno da busca em Resumo só vem as informações relacionadas a propria tabela resumo sem os objetos Resumo_detalhes, como posso fazer pra q ele seja retornado no JSON Classe Service: ...
ML
Serviço rest  
Bom dia, estou usando o serviço rest do adianti e estou com dificuldade para trazer informações da classe associada.
Tenho duas classes: Resumo e ResumoDetalhe ( 1 resumo tem vários detalhes)

No retorno da busca em Resumo só vem as informações relacionadas a propria tabela resumo sem os objetos Resumo_detalhes, como posso fazer pra q ele seja retornado no JSON

Classe Service:

$repository = new TRepository($activeRecord); $objects = $repository->load($criteria, TRUE); $attributes = defined('static::ATTRIBUTES') ? static::ATTRIBUTES : null; $return = []; if ($objects) { foreach ($objects as $object) { $return[] = $object->toArray( $attributes ); } } TTransaction::close(); return $return;


Model da Classe Resumo, metodo load:
/** * Load the object and its aggregates * @param $id object ID */ public function load($id) { // load the related ResumoDetalhe objects $repository = new TRepository('ResumoDetalhe'); $criteria = new TCriteria; $criteria->add(new TFilter('id_resumo', '=', $id)); $resumo_detalhes = $repository->load($criteria); if ($resumo_detalhes) { foreach ($resumo_detalhes as $resumo_detalhe) { $resumo_detalhe = new ResumoDetalhe($resumo_detalhe->id , TRUE); $this->addResumoDetalhe($resumo_detalhe); } } // load the object itself return parent::load($id); }


Retorno:
{ "status": "success", "data": [ { "id": "1", "mes": "06/2018", "cli": "000101", "clides": "Administracao", "id_empresa": "1" } ] }

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 (1)


NR

Você vai ter que adicioná-los manualmente ao array de retorno:
 
  1. <?php
  2. if ($objects)
  3. {
  4. foreach ($objects as $object)
  5. {
  6. $dados = $object->toArray( $attributes );
  7. $dados['detalhes'] = [];
  8. // confirmar se o atributo é mesmo "resumo_detalhes"
  9. foreach ($object->resumo_detalhes as $det)
  10. {
  11. $dados['detalhes'][] = $det->toArray();
  12. }
  13. $return[] = $dados;
  14. }
  15. }
  16. ?>