Cakephp e seus acumulos de cache. SOLUÇÃO!

Posted on the março 7th, 2008 under CakePHP,Programação by Renan Lima

Lembra do pog que usei para resolver uma situação no cake? Se não lembra veja aqui:

Bem galera, descobri a solução!

Não contente em usar o POG resolvi pesquisar e encontrei um recurso que o cake disponibiliza chamado beforeSave.

O beforeSave faz nada mais que executar uma instrução antes de salvar um dado no banco. Assim como ele, tem o afterSave, beforeFind e afterFind. O after tem o efeito oposto do before.

É muito simples de usar, veja os códigos abaixo:

Sem o before:

$conditions = array(‘mes’=>$mes,’ano’=>$ano);
$this->CoorporativoLigacoes->find($conditions);


$this->CoorporativoLigacoes->save($this->data());

Isso resultava em um erro, pois o resultado da consulta sempre será o mesmo, o ultimo dado cadastrado. Isso porque o cake salva no banco antes de fazer a consulta, ou melhor, ele executa as duas instruções ao mesmo tempo, mas o save é mais rápido.

Agora veja a solução usando o beforeSave

function beforeSave()
{
$conditions = array(‘mes’=>$mes,’ano’=>$ano);
$result = $this->CoorporativoLigacoes->find($conditions);
return $result;
}

function index()
{
$result = $this->beforeSave(); // este será executado primeiro
$this->CoorporativoLigacoes->save($this->data()); // Este só será executado depois do beforeSave
}

O mesmo uso deste você pode aplicar no afterSave, beforeFind, afterFind, etc.

Qualquer dúvida, só postar aqui.

PS: Nada de POG. ;)

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">