Cakephp e seus acumulos de cache. SOLUÇÃO!
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.