Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Problema com campo Primary Key Boa Noite, estou migrando um sistema em JAVA que tenho para o PHP usando o adianti, e me deparei com um problema ao tentar usar o LOG de Alteração de dados, pois na classe SystemChangeLogTrait ela usa como campo chave fixo o ID, cfe abaixo: ...
AB
Problema com campo Primary Key  
Fechado
Boa Noite, estou migrando um sistema em JAVA que tenho para o PHP usando o adianti, e me deparei com um problema ao tentar usar o LOG de Alteração de dados, pois na classe SystemChangeLogTrait ela usa como campo chave fixo o ID, cfe abaixo:
  1. <?php
  2.     public function onBeforeStore($object)
  3.     {
  4.         $this->lastState = array();
  5.         if (self::exists($object->id))
  6.         {
  7.             $this->lastState parent::load($object->id)->toArray();
  8.         }
  9.     }
  10. ?>


Mas nas tabelas que ja tenho o campo chave não é ID, ele é por exemplo na tabela t300cliente a chave primária é codCliente300, ele é inteiro, auto-incremento, tudo normal, mas o nome é diferente, e ja to tentando o dia todo ver uma forma de usar o codCliente300 no lugar do ID e não consigo, poi so trait será usado por outras tabelas que terão outras chaves primárias, com outros nomes, alguem teria uma idéia de como eu poderia fazer isto, sem ter que criar no banco de dados este campo que deixaria a minha modelagem com gambiarra, ja que em todos os campso da tabela tem o 300 na descriçao dele.

Se alguem puder ajudar, agradeço, segue abaixo o model da tabela

  1. <?php
  2. /**
  3.  * T300cliente Active Record
  4.  * @author  agostinho Francisco Barbosa
  5.  */
  6. class T300cliente extends TRecord
  7. {
  8.     const TABLENAME  't300cliente';
  9.     const PRIMARYKEY 'codCliente300';
  10.     const IDPOLICY   'serial'// {max, serial}
  11.     
  12.     use SystemChangeLogTrait;
  13.     
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct(2664 NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct(2664$callObjectLoad);
  20.         parent::addAttribute('nome300');
  21.         parent::addAttribute('endereco300');
  22.         parent::addAttribute('numero300');
  23.         parent::addAttribute('complemento300');
  24.         parent::addAttribute('bairro300');
  25.         parent::addAttribute('cep300');
  26.         parent::addAttribute('celular300');
  27.         parent::addAttribute('fone300');
  28.         parent::addAttribute('cpf_cnpj300');
  29.         parent::addAttribute('email300');
  30.         parent::addAttribute('rg_ie300');
  31.         parent::addAttribute('obs300');
  32.         parent::addAttribute('cidade300');
  33.         parent::addAttribute('uf300');
  34.         parent::addAttribute('fax300');
  35.         parent::addAttribute('profissao300');
  36.         parent::addAttribute('empresa300');
  37.         parent::addAttribute('dataNascimento300');
  38.         parent::addAttribute('estadoCivil300');
  39.         parent::addAttribute('contato300');
  40.         parent::addAttribute('bloqueado300');
  41.         parent::addAttribute('nacionalidade300');
  42.         parent::addAttribute('tipopessoa300');
  43.         parent::addAttribute('fantasia300');
  44.         parent::addAttribute('senha300');
  45.         parent::addAttribute('ativo300');
  46.     }
  47. }
  48. ?>

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)


TO

Bom dia! O Pablo já havia postado uma solução!

www.adianti.com.br/forum/pt/view_1942?notice-em-systemchangelogtrait
AB

Bom Dia, obrigado Tiago pelo retorno, ontem pesquisei nos titulo e não tinha me atentado a esse tópico que você me passou, procure por erro de log, id, chave e esse passou batido. Apliquei o que ta nele e funcionou 100%, obrigado. Pablo, não teria como colocar essa alteração no framework para novos projetos?
PD

Sim, integrará a próxima versão.
AB

Obrigado pelo retorno, ainda estou tendo problemas ao salvar, classes associadas ou agregadas, da erro de campo chave nao localizado, porque ele procura na classe principal, tem alguma forma de contornar isto?