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?
1 comentari:
Estic a anys llum encara de preocupar-me per coses així però està bé saver-ho.
Com més veig com es treballa amb Cake més m'agrada. Tinc ganes de posar-lo en pràctica en alguna cosa de debó.
Publica un comentari a l'entrada