CD
busca dados TDataGridColumn (insolúvel)
Pessoal,
Estou com erro ao tentar mostrar uma coluna associada no meu Datagrid. Ja tentei todas as dicas que deram aqui no forum sobre o assunto e continuo recebendo erro "Tentativa de acesso a uma propriedade não existente (ocorrencia->navio->nome).
Estou utilizando adiante framework 7
Peço por gentileza a ajuda dos amigos e até do Mestre Pablo.
// model ocorrencia.php
Estou com erro ao tentar mostrar uma coluna associada no meu Datagrid. Ja tentei todas as dicas que deram aqui no forum sobre o assunto e continuo recebendo erro "Tentativa de acesso a uma propriedade não existente (ocorrencia->navio->nome).
Estou utilizando adiante framework 7
Peço por gentileza a ajuda dos amigos e até do Mestre Pablo.
// model ocorrencia.php
- <?php
- /**
- * Ocorrencia Active Record
- * @author <your-name-here>
- */
- class Ocorrencia extends TRecord
- {
- const TABLENAME = 'ocorrencia';
- const PRIMARYKEY= 'ID_OCORRENCIA';
- const IDPOLICY = 'serial'; // {max, serial}
- private $cliente;
- private $navio;
- private $tipo_ocorrencia;
- private $turno;
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('ID_NAVIO');
- parent::addAttribute('ID_TURNO');
- parent::addAttribute('ID_TIPO_OCORRENCIA');
- parent::addAttribute('ID_CLIENTE');
- parent::addAttribute('DESCRICAO');
- parent::addAttribute('ACAO_IMEDIATA');
- parent::addAttribute('DATA_OCORRENCIA');
- parent::addAttribute('HORA_INI');
- parent::addAttribute('HORA_FIM');
- parent::addAttribute('CHUVA_MM');
- parent::addAttribute('ARQUIVOS_PATH');
- }
- /**
- * Method set_cliente
- * Sample of usage: $ocorrencia->cliente = $object;
- * @param $object Instance of cliente
- */
- public function set_cliente(cliente $object)
- {
- $this->cliente = $object;
- $this->cliente_id = $object->id_cliente;
- }
- /**
- * Method get_cliente
- * Sample of usage: $ocorrencia->cliente->attribute;
- * @returns cliente instance
- */
- public function get_cliente()
- {
- // loads the associated object
- if (empty($this->cliente))
- $this->cliente = new cliente($this->cliente_id);
- // returns the associated object
- return $this->cliente;
- }
- /**
- * Method set_navio
- * Sample of usage: $ocorrencia->navio = $object;
- * @param $object Instance of navio
- */
- public function set_navio(navio $object)
- {
- $this->navio = $object;
- $this->navio_id = $object->id_navio;
- }
- /**
- * Method get_navio
- * Sample of usage: $ocorrencia->navio->attribute;
- * @returns navio instance
- */
- public function get_navio()
- {
- // loads the associated object
- if (empty($this->navio))
- $this->navio = new navio($this->navio_id);
- // returns the associated object
- return $this->navio;
- }
- /**
- * Method set_tipo_ocorrencia
- * Sample of usage: $ocorrencia->tipo_ocorrencia = $object;
- * @param $object Instance of tipo_ocorrencia
- */
- public function set_tipo_ocorrencia(tipo_ocorrencia $object)
- {
- $this->tipo_ocorrencia = $object;
- $this->tipo_ocorrencia_id = $object->ID_TIPO_OCORRENCIA;
- }
- /**
- * Method get_tipo_ocorrencia
- * Sample of usage: $ocorrencia->tipo_ocorrencia->attribute;
- * @returns tipo_ocorrencia instance
- */
- public function get_tipo_ocorrencia()
- {
- // loads the associated object
- if (empty($this->tipo_ocorrencia))
- $this->tipo_ocorrencia = new tipo_ocorrencia($this->tipo_ocorrencia_id);
- // returns the associated object
- return $this->tipo_ocorrencia;
- }
- /**
- * Method set_turno
- * Sample of usage: $ocorrencia->turno = $object;
- * @param $object Instance of turno
- */
- public function set_turno(turno $object)
- {
- $this->turno = $object;
- $this->turno_id = $object->id_turno;
- }
- /**
- * Method get_turno
- * Sample of usage: $ocorrencia->turno->attribute;
- * @returns turno instance
- */
- public function get_turno()
- {
- // loads the associated object
- if (empty($this->turno))
- $this->turno = new turno($this->turno_id);
- // returns the associated object
- return $this->turno;
- }
- }
- // model navio.php
- <?php
- /**
- * Navio Active Record
- * @author <your-name-here>
- */
- class Navio extends TRecord
- {
- const TABLENAME = 'bzm_navio';
- const PRIMARYKEY= 'ID_NAVIO';
- const IDPOLICY = 'serial'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('NOME');
- parent::addAttribute('IMO');
- parent::addAttribute('COMPRIMENTO');
- parent::addAttribute('DWT');
- parent::addAttribute('ARMADOR');
- parent::addAttribute('BANDEIRA');
- parent::addAttribute('CALADO_MAX');
- parent::addAttribute('ANO_CONSTRUCAO');
- parent::addAttribute('IDC_GUINCHO');
- parent::addAttribute('IDC_EXCLUIDO');
- }
- }
Carlos
Se a datagrid está carregando os dados de ocorrência, a referência correta seria:
Se observar o model Ocorrencia, você tem o método
O relacionamento no model ocorrencia está errado.
O atributo definido é parent::addAttribute('ID_NAVIO');
Portanto no método set_navio, deveria ser:
Marcelo,
Fiz a mudança e o erro desaparece mas não aparece nada na coluna do Grid fica tudo em branco.
Os nomes das colunas (atributos das tabelas) estão iguais?
tbl_navio = id_navio pk
tbl_ocorrencia = id_navio fk
sim estão iguais
A minha entrada de dados funciona direitinho com TDBCombo mas no datagrid o relaciomanento não funciona
Carlos
Pode compartilhar o método onReload onde você carrega a grid?
Bom dia, Segue todo o fonte do datagrid
Acredito que seja algum detalhe que não estou conseguindo ver.
Eu não utilizo trait, pois fica mais fácil de debugar.
Mas você pode alternativamente usar "setTransformer" para exibir o nome do navio.
Faz o seguinte: