如何在cakephp中获取相关表的COUNT值

时间:2012-11-14 14:24:21

标签: mysql cakephp

我正在使用cakephp中的词汇表创建/管理工具。现在我坚持用术语分页结果。

现在我正在使用此代码将每个术语的翻译数量放在术语索引中:

public $findMethods = array('translations' =>  true);

protected function _findTranslations($state, $query, $results = array()) {
    if ($state == 'after') {
        foreach($results as $index => $result):
            $countid = $result['Term']['id'];
            $translationcount = $this->query('SELECT COUNT(*) as translations_number FROM translations WHERE term_id = '.$countid);
            $translationcount = $translationcount[0][0]['translations_number'];
            $results[$index]['Term']['translation_count'] = $translationcount;
        endforeach;

        return $results;
    }

}   

它正在工作,显示每个术语的翻译数量,但是 - 我不能按该列排序。可能是因为数据在查询后更新,并且分页不知道如何对其进行排序。

但我不知道如何扩展我的查询以获取有关每个学期的翻译计数的信息。

这是我的Term模型中的内容(除了之前粘贴的代码)

var $hasMany = array(
    'Translation' => array(
        'className'     => 'Translation',
        'foreignKey'    => 'term_id',
        'dependent'     => true
    )
);

翻译模型中有什么:

var $belongsTo = 'Term';

在数据库中它看起来像在表格中我有常规的id和术语(除了其他对这个不重要的字段)和翻译表中我有常规id,相关term_id和实际翻译。

我希望一切都清楚,我不是程序员,我所做的只是通过尝试/失败方法 - 但是在这个问题上我被卡住了:)

1 个答案:

答案 0 :(得分:0)

我假设你要找的是CakePHP's counterCache(向下滚动几行)。它会自动计算模型所包含的相关项目的数量。