Dica: salvando automaticamente a data de criação e de última atualização quando a tabela não segue o padrão do CakePHP
Olá pessoal,
hoje passei por mais um problema no meu projeto por ele não usar a padronização do Cake no banco.
Como vocês devem saber o Cake popula automaticamente campos nomeados com CREATED, MODIFIED e UPDATED, sendo data de criação no primeiro e alteração nos dois últimos.
Pois bem, no meu projeto, que não segue o padrão do Cake tive que usar o callback do model, o beforeSave. O qual é executado antes do save do model e após a validação dos dados.
O código ficou assim dentro do meu model:
Onde:
- Model - seu model
- CampoChavePrimaria - o campo chave primária da sua tabela que persiste o model
- CampoCriadoEm - o campo que armazena a data de criação do registro
- CampoModificadoEm - o campo que armazena a data de alteração do registro
Observe que o beforeSave retorna true, somente quando isso ocorre que é efetuado o save no banco.
Isso pode ser usado em outras situações, daí vai da criatividade, como criptografar a senha para guardar no banco e por aí vai...
Qualquer dúvida, comentem!
Até a próxima!
6 Comentários »
RSS feed for comments on this post · URI do TrackBack
Este site é escrito por Tulio Faria, analista de sistemas, apaixonado por web, jogos e por qualquer cacareco tecnológico.
Victor Sobreira said,
Outubro 18, 2007 @ 02:56
Achei muito bom o post.
usei o before save quando eu tinha que transformar um campo de validação que era dia,mes e ano em uma data.
function beforeSave(){
$data['Promocoe']['validade']=$data['Promocoe']['ano'].'-'.$data['Promocoe']['mes'].'-'.$data['Promocoe']['dia'];
// Apagando dados que não usa.
unset($data['Promocoe']['dia']);
unset($data['Promocoe']['ano']);
unset($data['Promocoe']['mes']);
return true
}
exemplo acima do que eu fiz.
Henrique de Castro said,
Fevereiro 16, 2008 @ 17:50
Interessante a dica, com ela me veio uma idéia que gerou dúvidas.
Utilizei o beforeSave para fazer Upload de imagens e gravá-las no banco. Funcionou blz, exceto por um detalhe, é que no meu caso a imagem é obrigatória, então como validá-la dentro do padrão do Cake?! Poderia jogar um invalidate para o field?!
Valeu e parabéns pelo blog.
Henrique de Castro said,
Fevereiro 16, 2008 @ 18:13
Ahhh.. o detalhe que esqueci de mencionar.. é no cake 1.2.
No 1.1.x eu dava um invalidate e funcionava, no 1.2 não consegui fazer isso.
AndreEncinas said,
Maio 23, 2008 @ 02:59
olá Túlio veja se estou errado .....fiz segundo o post e a data de created eh alterada sempre, mesmo que eu esteja editando e não inserindo, onde estou errando ?
valeuuu
AndreEncinas said,
Maio 23, 2008 @ 03:16
olá Túlio ja vi meu erro, não estava verificando a existência da PKey.....valeu
obrigado por este MARAVILHOSO SITE ......este é meu site de cabeçeira rsrsrsrsr
valeuuuu
Anderson Custódio said,
Novembro 11, 2008 @ 21:48
Execelente, pode-se usar esta solução também para salvar o ip ou user_agente, acho que seria interessante o cake popularizar estes 2 campos por padrão, e arrumar uma melhor maneira de acrescertar mais campos, para não ter que fazer isto em todas páginas.