GJ
Chave primaria com GUID (ou UUID)
Prezados, estou começando a usar o adianti framework. Nos meus projetos eu sempre uso como ID um GUID (Globally Unique IDentifier), que é uma string de 32 caracteres (sem delimitadores). A minha dúvida é: como usar como chave primária, se o adianti trabalha com chave primaria como inteiros ??
Eu acho que não tem problemas.
Ocorre que você deverá montar os models na mão.
Dê uma olhada no link abaixo:
adianti.com.br/framework_files/tutor/index.php?class=HookMethodView
Acredito que você possa utilizar o método onBeforeStore para realizar a verificação de chave primária e criá-la de acordo com a sua necessidade.
Alguém tem algum exemplo que utilize ( Chave primaria com GUID ) meus projetos mobile e desck top utiliza cheve primaria GUID e preciso fazer uma integração com meu projeto desenvolvido no adanti framework.. algum explo no forum... me ajudem ai galera
Nilton, eu resolvi da seguinte forma:
Na classe que representa o MODEL, coloquei na chave primaria:
const PRIMARYKEY= 'id';
const IDPOLICY = 'serial';
Ainda no MODEL, defini o onBeforeStore, conforme sugestão do Nataniel Rabaioli.
public function onBeforeStore($object)
{
$pk = $this->getPrimaryKey();
if (!isset($object->$pk))
{
$object->$pk = strtoupper(GenericFunctions::GUIDv4(false));
$this->$pk = $object->$pk;
}
}
Olá Geazi, Tentei implementar essa mesma funcionalidade que vc fez mas no meu caso continua gerando a chave primaria de forma sequencial e com número inteiro.
Há alguma coisa a mais que precisa ser implementada além dessas alterações que vc colocou no Model? devo instalar alguma biblioteca?
Fiz da seguinte forma em meu código mas não funcionou
Ricelli,
Acho que o que esta faltando é o arquivo de funcoes, GenericFunctions.
Segue o codigo. Salve com o nome de GenericFunctions.class.php dentro da pasta libutil
O código não é meu. Peguei vasculhando na documentação e forum do php. Acho que é do Dave Pearson (dave@pds-uk.com).
Funciona normalmente.
Saiu errado. É pra salvar na pasta util dentro da pasta lib
Olá Geazi!
Não sei o que pode estar ocorrendo, fiz dessa maneira que você informou ai, criei o arquivo com a função GenericFunctions, alterei o model colocando a const IDPOLICY = 'serial' mas só gera a chave primária como inteiro, sequencial.
Uma pena, precisava tanto disso funcionando.
A seu campo id da chave primária você deixou como inteiro mesmo, correto?
Assim ficou meu arquivo MODEL
Nos testes que fiz aqui parece que nunca entra neste if da função onBeforeStore
Galera, não sei se isso ajuda, mas fica aí a dica, ao invés do onBeforeStore(), vocês criam uma nova classe que estenda TRecord. Daí se o seu modelo usa o guid como chave primária, vocês estendem de GUIDRecord, por exemplo. Espero que funcione pra vocês, não cheguei a testar realmente, só fiz escrever aqui hehe