Encontrei a solução deste problema e postei no blog, veja aqui.

Cakephp e seus acúmulos de cache. Algo a ser melhorado.

A partir de hoje vou começar a falar da minha experiência com o CakePHP, para os íntimos somente Cake. Tentarei passar a você o máximo de dicas. :)

Hoje perdi algumas horas tentando resolver uma questão no Cake. Tá rindo? Foi sinistro.

Estava precisando realizar as seguintes instruções dentro de um loop:

- Verificar se o dado existe no banco
- Se não existir, grava o dado no banco

Bem, é uma coisa bem simples dentro de uma aplicação meio complexa, mas enfim, acontece que o cake armazena os dados buscados no banco em cache, isso melhora a performance do processo mas as vezes atrapalha.

Com o cash abastecido, mesmo que tivesse dado preenchido no banco, o cake não o encontrava, pois usava o cache do Find anterior e não me retornava nada.

Tentei usar o $cacheSources=false, getInsertId, execute, mas por incrível que pareça não funcionou.

Depois de algumas horas de tentativas resolvi usar uma espécie de POG. Eu não queria, mas pog sempre resolve.:)

Então eu coloquei a query – como diz um amigo aqui do trabalho – na mão. E lá fui eu “mysql_query(select ……….);”.

Ual! Foi impressionante, mas funcionou. Isso mesmo, com o POG.

Depois ainda fiquei pesquisando o porque disso, será que é um bug do cake, eu não acredito, eu é que não devo estar sabendo usar isso adequadamente.

Bem, até agora eu não sei, se você souber, gostaria de saber. :)

Perdi algumas horas mas adquiri conhecimento, isso vale mais.

Uma vez um amigo aqui do trabalho consegui resolver o mesmo problema simplesmente com o cacheSources, mas hoje, não foi o caso.

Até a próxima!

Encontrei a solução deste problema e postei no blog, veja aqui.