Przechowuje w tabeli ilość rekordów podrzędnych (dzieci). Definiowany jest na tabeli podrzędnej ( belongsTo() ). Tabela nadrzędna musi mieć kolumnę typu int (np. comment_count)
class CommentsTable extends Table { public function initialize(array $config) { $this->belongsTo('Articles'); $this->addBehavior('CounterCache' , [ 'Articles' => [ 'comment_count' ] ]); } }
Można zastosować CounterCache w powiązaniach belongsToMany() tylko z opcją through. Wówczas behaviour definiuje się w tabeli łączącej gdyż posiada powiązania belongsTo().
Wprowadzenie warunku – zlicza tylko komentarze bez spamu
$this->addBehavior('CounterCache' , [ 'Articles' => [ 'comment_count' => [ 'conditions' => [ 'Comments.spam' => false] ] ] ]);