Lançado Adianti Framework 8.0!
Clique aqui para saber mais
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.     
  8.     public function __construct($id NULL$callObjectLoad TRUE)
  9.     {
  10.         parent::__construct($id$callObjectLoad);
  11.         parent::addAttribute('descricao');
  12.     }
  13. }
  14. ?>


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.     
  8.     private $cidade;
  9.     public function __construct($id NULL$callObjectLoad TRUE)
  10.     {
  11.         parent::__construct($id$callObjectLoad);
  12.         parent::addAttribute('localidade');
  13.         parent::addAttribute('idcidade');
  14.     }
  15.     public function set_cidade(Cidade $object)
  16.     {
  17.         $this->cidade $object;
  18.         $this->cidade_id $object->id;
  19.     }
  20.     public function get_cidade()
  21.     {
  22.         // loads the associated object
  23.         if (empty($this->cidade))
  24.             $this->cidade = new Cidade($this->cidade_id);
  25.     
  26.         // returns the associated object
  27.         return $this->cidade;
  28.     }
  29. }
  30. ?>


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.         
  8.         // creates the datagrid columns
  9.         $column_idlocalidade = new TDataGridColumn('idlocalidade''ID''left');
  10.         $column_localidade = new TDataGridColumn('localidade''Localidade''left');
  11.         //$column_idcidade = new TDataGridColumn('idcidade', 'ID Cidade', 'left');
  12.         $column_cidade = new TDataGridColumn('cidade->descricao''Cidade''left');
  13.         // add the columns to the DataGrid
  14.         $this->datagrid->addColumn($column_idlocalidade);
  15.         $this->datagrid->addColumn($column_localidade);
  16.         //$this->datagrid->addColumn($column_idcidade);
  17.         $this->datagrid->addColumn($column_cidade);
  18. ?>


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á 2 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á 1 mês) - Ver alterações