Duvida com Datagrid Boa Tarde! Estou com uma duvida, eu tenho uma tabela de ordens de serviço e uma tabela de produtos, eu abro uma OS para um produto, na pagina de cadastrar a OS eu utilizei um TDBCombo para mostrar o nome do produto, mas armazeno o ID, quando criei um grid (pelo Studio Pro) eu vejo o id do produto, eu gostaria de retornar o nome que tem na tabela de produto. Segue código do datagrid abaixo:...
CO
Duvida com Datagrid  
Boa Tarde!

Estou com uma duvida, eu tenho uma tabela de ordens de serviço e uma tabela de produtos, eu abro uma OS para um produto, na pagina de cadastrar a OS eu utilizei um TDBCombo para mostrar o nome do produto, mas armazeno o ID, quando criei um grid (pelo Studio Pro) eu vejo o id do produto, eu gostaria de retornar o nome que tem na tabela de produto.

Segue código do datagrid abaixo:

 
  1. <?php
  2. // creates the datagrid columns
  3. $column_numero = new TDataGridColumn('numero', 'Numero', 'right');
  4. $column_produto_id = new TDataGridColumn('produto_id', 'Produto Id', 'right');
  5. $column_data_inicio = new TDataGridColumn('data_inicio', 'Data Inicio', 'left');
  6. $column_data_fim = new TDataGridColumn('data_fim', 'Data Fim', 'left');
  7. $column_status = new TDataGridColumn('status', 'Status', 'left');
  8. // add the columns to the DataGrid
  9. $this->datagrid->addColumn($column_numero);
  10. $this->datagrid->addColumn($column_produto_id);
  11. $this->datagrid->addColumn($column_data_inicio);
  12. $this->datagrid->addColumn($column_data_fim);
  13. $this->datagrid->addColumn($column_status);
  14. ?>


Atenciosamente,
Claudio Oliveira

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


NR

Claudio, se você criou a associação corretamente no model, bastaria fazer o seguinte:
 
  1. <?php
  2. $column_produto_id = new TDataGridColumn('produto->descricao', 'Produto Id', 'right');
  3. ?>
CO

Bom dia Nataniel,

Como crio a associação? eu já havia tentado esta opção mas apresenta o seguinte erro:

Tentativa de acesso a uma propriedade não existente(Produto->descricao).

Veja minhas classes:

 
  1. <?php
  2. /**
  3. * Produto Active Record
  4. * @author Claudio Oliveira
  5. */
  6. class Produto extends TRecord
  7. {
  8. const TABLENAME = 'gestor_produto';
  9. const PRIMARYKEY= 'id';
  10. const IDPOLICY = 'max'; // {max, serial}
  11. /**
  12. * Constructor method
  13. */
  14. public function __construct($id = NULL, $callObjectLoad = TRUE)
  15. {
  16. parent::__construct($id, $callObjectLoad);
  17. parent::addAttribute('codigo');
  18. parent::addAttribute('descricao');
  19. parent::addAttribute('prod_hora');
  20. parent::addAttribute('ciclo');
  21. parent::addAttribute('ativo');
  22. }
  23. }
  24. ?>


 
  1. <?php
  2. /**
  3. * Ordem Active Record
  4. * @author Claudio Oliveira
  5. */
  6. class Ordem extends TRecord
  7. {
  8. const TABLENAME = 'gestor_ordem';
  9. const PRIMARYKEY= 'id';
  10. const IDPOLICY = 'max'; // {max, serial}
  11. /**
  12. * Constructor method
  13. */
  14. public function __construct($id = NULL, $callObjectLoad = TRUE)
  15. {
  16. parent::__construct($id, $callObjectLoad);
  17. parent::addAttribute('numero');
  18. parent::addAttribute('produto_id');
  19. parent::addAttribute('qtde');
  20. parent::addAttribute('data_inicio');
  21. parent::addAttribute('data_fim');
  22. parent::addAttribute('status');
  23. parent::addAttribute('ativo');
  24. }
  25. }
  26. ?>


Abraço
NR

Recrie o model Ordem pelo Studio. Na parte de relacionamentos clique em adicionar, selecione Associação e a classe Produto.

Neste novo model devem ser criadas 2 funções, get_produto e set_produto.
CO

Muito Obrigado pela ajuda!

Funcionou perfeitamente. E eu já entendi, eu estava pensando no banco de dados,e na verdade, sem instanciar a classe produto eu não tenho como receber um atributo dela...