Una de les novetats que vaig veure revisant la documentació de la versió 1.2 no fa massa va ser que l’associació belongsTo incorporava un nou paràmetre: counterCache. El paràmetre counterCache permet mantenir un atribut amb el comptador de quants models té associat a través de hasMany.
Com utilitzar counterCache? Precisament em va anar perfecte perquè tenia un sistema de noticies amb comentaris i volia mostrar el número de comentaris de les noticies a la portada, així que m’estalvio de fer una consulta amb count o recuperar tots els comentaris amb una join per saber quants comentaris en total té cada noticia. Tenint els següents models:Al model Comentari la relació belongsTo es defineix amb counterCache com a true.Noticia hasMany Comentari
Comentari belongsTo Noticia
var $belongsTo = array( 'Noticia' => array( 'className' => 'Noticia', 'counterCache' => true, ) );Afegim el camp comentari_count a la taula de la BD noticies i llestos. Cada cop que s’insereixi (o s’esborri) un comentari, cake s’encarregarà d’actualitzar el camp comentari_count. Fàcil no?