Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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 completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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. ?>