Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Pegar dados de tabela relacionada Olá, Estou tentado carregar item de tabela relacionada ( contatoweb), porém sem sucesso. Segue foonte abaixo: Grid onde estou tentando carregar os dados ...
RB
Pegar dados de tabela relacionada  
Olá,

Estou tentado carregar item de tabela relacionada ( contatoweb), porém sem sucesso.


Segue foonte abaixo:
Grid onde estou tentando carregar os dados

  1. <?php
  2. class DatagridCheckView extends TPage
  3. {
  4.       private $datagrid;
  5.       private $pageNavigation;
  6.       private $loaded;
  7.       private $form;
  8.       private $editar;
  9.     public function __construct()
  10.     {
  11.         parent::__construct();
  12.        $this->datagrid = new TDataGrid;
  13.         //$this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  14.         $this->datagrid->style="width: 100%"// Responsive
  15.         $telefone          = new TDataGridColumn('pessoa->contato->telefone','Telefone','left'); //esta linha esta funcionando
  16.         $email              = new TDataGridColumn('pessoa->contato_web->email','E-mail','left');// esta linha não funciona
  17.         $this->datagrid->addColumn($telefone);
  18.         $this->datagrid->addColumn($email);
  19.         $this->datagrid->addColumn($site);
  20.       $this->datagrid->createModel();
  21.      ....
  22. ?>

model cliente

  1. <?php
  2.     class Cliente extends TRecord
  3. {
  4.     const TABLENAME 'cliente';
  5.     const PRIMARYKEY'id';
  6.     const IDPOLICY =  'serial'// {max, serial}
  7.     private $pessoa;
  8.     /**
  9.      * Constructor method
  10.      */
  11.     public function __construct($id NULL$callObjectLoad TRUE)
  12.     {
  13.         parent::__construct($id$callObjectLoad);
  14.         parent::addAttribute('pessoa_id');
  15.         parent::addAttribute('organizacao_id');
  16.         parent::addAttribute('criacao');
  17.         parent::addAttribute('atualizacao');
  18.         parent::addAttribute('ativo');
  19.    
  20.     }
  21.     /**
  22.      * Method set_pessoa
  23.      * Sample of usage: $cliente->pessoa = $object;
  24.      * @param $object Instance of Pessoa
  25.      */
  26.     public function set_pessoa(Pessoa $object)
  27.     {
  28.         $this->pessoa $object;
  29.         $this->pessoa_id $object->id;
  30.     }
  31.     /**
  32.      * Method get_pessoa
  33.      * Sample of usage: $cliente->pessoa->attribute;
  34.      * @returns Pessoa instance
  35.      */
  36.     public function get_pessoa()
  37.     {
  38.         // loads the associated object
  39.         if (empty($this->pessoa))
  40.             $this->pessoa = new Pessoa($this->pessoa_id);
  41.         // returns the associated object
  42.         return $this->pessoa;
  43.     }
  44. ?>


model Pessoa

  1. <?php
  2. class Pessoa extends TRecord
  3. {
  4.     const TABLENAME 'pessoa';
  5.     const PRIMARYKEY'id';
  6.     const IDPOLICY =  'serial'// {max, serial}
  7.     private $pessoa;
  8.     private $contato;
  9.     private $contato_web;
  10.    
  11.     /**
  12.      * Constructor method
  13.      */
  14.     public function __construct($id NULL$callObjectLoad TRUE)
  15.     {
  16.         parent::__construct($id$callObjectLoad);
  17.         parent::addAttribute('nome');
  18.         parent::addAttribute('data_nascimento');
  19.         parent::addAttribute('organizacao_id');
  20.         parent::addAttribute('criacao');
  21.         parent::addAttribute('atualizacao');
  22.         parent::addAttribute('ativo');
  23.         parent::addAttribute('tipo_pessoa_id');
  24.     }
  25. public function get_contato()
  26.     {
  27.         if (empty($this->contato))
  28.         {
  29.             $contato Contato::where('pessoa_id','=',$this->id)
  30.                                 ->where($this->tipo_pessoa_id,'=',1)->load();
  31.             $this->contato $contato[0];
  32.         }
  33.         return $this->contato;
  34.     }
  35.     /**
  36.      * Method get_contato_web
  37.      * Sample of usage: $pessoa->contato_web->attribute;
  38.      * @returns Contatoweb instance
  39.      */
  40.    public function get_contato_web()
  41.     {
  42.         if (empty($this->contato_web))
  43.         {
  44.             $contatoweb ContatoWeb::where('pessoa_id','=',$this->id)
  45.                                        ->where($this->tipo_pessoa_id,'=',1)
  46.                                        ->load();
  47.             $this->contatoweb $contatoweb[0];
  48.         }
  49.         return $this->contato_web;
  50.     }
  51. }
  52. ?>


Model ContatoWeb
  1. <?php
  1. <?php
  2. /**
  3.  * Contatoweb Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class ContatoWeb extends TRecord
  7. {
  8.     const TABLENAME 'contatoweb';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     private $pessoa;
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct($id NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct($id$callObjectLoad);
  20.         parent::addAttribute('pessoa_id');
  21.         parent::addAttribute('email');
  22.         parent::addAttribute('site');
  23.     }
  24.     
  25.     /**
  26.      * Method set_pessoa
  27.      * Sample of usage: $contatoweb->pessoa = $object;
  28.      * @param $object Instance of Pessoa
  29.      */
  30.     public function set_pessoa(Pessoa $object)
  31.     {
  32.         $this->pessoa $object;
  33.         $this->pessoa_id $object->id;
  34.     }
  35.     
  36.     /**
  37.      * Method get_pessoa
  38.      * Sample of usage: $contatoweb->pessoa->attribute;
  39.      * @returns Pessoa instance
  40.      */
  41.     public function get_pessoa()
  42.     {
  43.         // loads the associated object
  44.         if (empty($this->pessoa))
  45.             $this->pessoa = new Pessoa($this->pessoa_id);
  46.     
  47.         // returns the associated object
  48.         return $this->pessoa;
  49.     }
  50. }
  51. ?>


Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


NR

Acho que é erro de digitação:
  1. <?php
  2. // deveria ser $this->contato_web = $contatoweb[0]
  3. $this->contatoweb $contatoweb[0];
  4. ?>
RB

Nataniel,

To ficando maluco....

já ajustei porem sem sucesso...

segue trecho Pessoa
  1. <?php
  2. .....
  3. private $contatoweb;
  4. public function get_contatoweb()
  5.     {
  6.         if (empty($this->contatoweb))
  7.         {
  8.             $contato_web ContatoWeb::where('pessoa_id','=',$this->id)->load();
  9.             $this->contatoweb $contato_web[0];
  10.         }
  11.         return $this->contatoweb;
  12.     }
  13. ?>



Grid

  1. <?php
  2.      $email   = new TDataGridColumn('pessoa->contatoweb->email','E-mail','left');
  3.      $site      = new TDataGridColumn('pessoa->contatoweb->site','Site','left');
  4. ?>