Datagrid não aparece descrição - relacionamento de associação Pessoal tenho duas tabelas simples. localidade: CREATE TABLE IF NOT EXISTS `intranet`.`localidade` ( `idlocalidade` INT NOT NULL, `localidade` VARCHAR(45) NULL, `idcidade` INT NOT NULL, PRIMARY KEY (`idlocalidade`), INDEX `fk_localidade_cidade_idx` (`idcidade` ASC), CONSTRAINT `fk_localidade_cidade` FOREIGN KEY (`idcidade`) REFERENCES `intranet`.`ci...
CD
Datagrid não aparece descrição - relacionamento de associação  
Pessoal tenho duas tabelas simples.

localidade:

CREATE TABLE IF NOT EXISTS `intranet`.`localidade` ( `idlocalidade` INT NOT NULL, `localidade` VARCHAR(45) NULL, `idcidade` INT NOT NULL, PRIMARY KEY (`idlocalidade`), INDEX `fk_localidade_cidade_idx` (`idcidade` ASC), CONSTRAINT `fk_localidade_cidade` FOREIGN KEY (`idcidade`) REFERENCES `intranet`.`cidade` (`idcidade`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB


cidade:

CREATE TABLE IF NOT EXISTS `intranet`.`cidade` ( `idcidade` INT NOT NULL, `descricao` VARCHAR(255) NULL, PRIMARY KEY (`idcidade`)) ENGINE = InnoDB


PHP: Cidade.php:

 
  1. <?php
  2. class Cidade extends TRecord
  3. {
  4. const TABLENAME = 'cidade';
  5. const PRIMARYKEY= 'idcidade';
  6. const IDPOLICY = 'max'; // {max, serial}
  7. public function __construct($id = NULL, $callObjectLoad = TRUE)
  8. {
  9. parent::__construct($id, $callObjectLoad);
  10. parent::addAttribute('descricao');
  11. }
  12. }
  13. ?>


PHP: Localidade.php:

 
  1. <?php
  2. class Localidade extends TRecord
  3. {
  4. const TABLENAME = 'localidade';
  5. const PRIMARYKEY= 'idlocalidade';
  6. const IDPOLICY = 'max'; // {max, serial}
  7. private $cidade;
  8. public function __construct($id = NULL, $callObjectLoad = TRUE)
  9. {
  10. parent::__construct($id, $callObjectLoad);
  11. parent::addAttribute('localidade');
  12. parent::addAttribute('idcidade');
  13. }
  14. public function set_cidade(Cidade $object)
  15. {
  16. $this->cidade = $object;
  17. $this->cidade_id = $object->id;
  18. }
  19. public function get_cidade()
  20. {
  21. // loads the associated object
  22. if (empty($this->cidade))
  23. $this->cidade = new Cidade($this->cidade_id);
  24. // returns the associated object
  25. return $this->cidade;
  26. }
  27. }
  28. ?>


Parte do código LocalidadeFormList.php:

 
  1. <?php
  2. // creates a Datagrid
  3. $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  4. $this->datagrid->style = 'width: 100%';
  5. // $this->datagrid->datatable = 'true';
  6. // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
  7. // creates the datagrid columns
  8. $column_idlocalidade = new TDataGridColumn('idlocalidade', 'ID', 'left');
  9. $column_localidade = new TDataGridColumn('localidade', 'Localidade', 'left');
  10. //$column_idcidade = new TDataGridColumn('idcidade', 'ID Cidade', 'left');
  11. $column_cidade = new TDataGridColumn('cidade->descricao', 'Cidade', 'left');
  12. // add the columns to the DataGrid
  13. $this->datagrid->addColumn($column_idlocalidade);
  14. $this->datagrid->addColumn($column_localidade);
  15. //$this->datagrid->addColumn($column_idcidade);
  16. $this->datagrid->addColumn($column_cidade);
  17. ?>


Mas não está aparecendo a "descricao" no datagrid e não aparece erro nenhum na tela, nem de php nem do framework.
Conseguem perceber qual o erro?
Framework 8.0.
Editado 06/01/2025 (há 5 meses) - Clique para ver alterações

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


FC

Aparentemente falta as chaves do if nessa parte:

public function get_cidade()
{
// loads the associated object

if (empty($this->cidade))
$this->cidade = new Cidade($this->cidade_id);

// returns the associated object
return $this->cidade;
}
Não está apresentando nenhum erro no log do PHP ?
CD

Descobri o problema.
É que na minha tabela o primary key é idcidade.
Mas o gerador de entidade do Studio Pro gerou assim:

 
  1. <?php
  2. $this->cidade_id
  3. ?>


Agora está funcionando. Mas engraçado que não gerava erro, apenas não apresentava a descrição quando eu chamava

 
  1. <?php
  2. cidade->descricao
  3. ?>


na coluna do grid.

Editado 07/02/2025 (há 4 meses) - Ver alterações