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:
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
- <?php
- public function onBeforeStore($object)
- {
- $this->lastState = array();
- if (self::exists($object->id))
- {
- $this->lastState = parent::load($object->id)->toArray();
- }
- }
- ?>
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
- <?php
- /**
- * T300cliente Active Record
- * @author agostinho Francisco Barbosa
- */
- class T300cliente extends TRecord
- {
- const TABLENAME = 't300cliente';
- const PRIMARYKEY = 'codCliente300';
- const IDPOLICY = 'serial'; // {max, serial}
- use SystemChangeLogTrait;
- /**
- * Constructor method
- */
- public function __construct(2664 = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct(2664, $callObjectLoad);
- parent::addAttribute('nome300');
- parent::addAttribute('endereco300');
- parent::addAttribute('numero300');
- parent::addAttribute('complemento300');
- parent::addAttribute('bairro300');
- parent::addAttribute('cep300');
- parent::addAttribute('celular300');
- parent::addAttribute('fone300');
- parent::addAttribute('cpf_cnpj300');
- parent::addAttribute('email300');
- parent::addAttribute('rg_ie300');
- parent::addAttribute('obs300');
- parent::addAttribute('cidade300');
- parent::addAttribute('uf300');
- parent::addAttribute('fax300');
- parent::addAttribute('profissao300');
- parent::addAttribute('empresa300');
- parent::addAttribute('dataNascimento300');
- parent::addAttribute('estadoCivil300');
- parent::addAttribute('contato300');
- parent::addAttribute('bloqueado300');
- parent::addAttribute('nacionalidade300');
- parent::addAttribute('tipopessoa300');
- parent::addAttribute('fantasia300');
- parent::addAttribute('senha300');
- parent::addAttribute('ativo300');
- }
- }
- ?>
Bom dia! O Pablo já havia postado uma solução!
www.adianti.com.br/forum/pt/view_1942?notice-em-systemchangelogtrait
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?
Sim, integrará a próxima versão.
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?