Я буду честен здесь и скажу, что вы, вероятно, будете намного счастливее, если просто создадите функцию в своей модели, что-то вроде getTopicVotes () и вызовите query () там. Любое другое решение, которое я могу придумать, только сделает его более сложным и, следовательно, более уродливым.
Edit:
В зависимости от размера ваших данных и при условии, что вы правильно настроили отношения модели (Тема имеет много элементов имеет много голосов), вы можете выполнить простой поиск («все»), содержащий все пункты и голоса, а затем сделать что-то вроде этого:
foreach ($this->data as &$topic)
{
$votes = Set::extract('/Topic/Item/Vote', $topic);
$topic['Topic']['vote_count'] = count($votes);
}
Здесь важны две вещи:
- Если у вас много данных, вы, вероятно, должны забыть об этом подходе, он будет чертовски медленным.
- Я написал это из моей памяти, и в реальной жизни это может выглядеть не так и / или вообще не работать: -)