может быть лучше сделать это в обратном вызове afterFind для модели, но это можно сделать и в контроллере.
$cats - $this->Cat->find('all',array('recursive'=>-1));
foreach($cats as $key=>$cat){
$cats[$key]['ArticleCount'] = $this->Cat->Article->find('count',array(
'conditions'=>array('Article.cat_id'=>$cat['Cat']['id']))
);
}
или посмотрите, работает ли это
$cats = $this->Cat->find('all',array('contain'=>array(
'Article'=>array('fields'=>array('COUNT(*) AS ArticleCount')
)));
очевидно, вам нужно будет добавить сдерживаемое поведение в модель категории.