Я знаю, что это ветка 2010 года, но у меня было много проблем с этим, и это первый результат Google.
Другой вариант - использовать afterFind в родительской модели Link, например:
public function afterFind($results, $primary = false) {
if(($this->findQueryType=='count') || $primary == false) return $results;
foreach ($results as $key => $val) {
if(isset($val['Vote'])) {
$votes = Hash::extract($val, 'Vote.{n}.vote');
$results[$key]['Link']['votes'] = array_sum($votes);
}
}
return $results;
}
Теперь каждый раз, когда вы выполняете функцию find () для Link, которая также возвращает объект голосования (например, при вызове find с использованием 'Contain'), ваш объект Link будет содержать сумму голосов.