2

我正在开发 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;
    }

}   

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

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

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

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

这就是翻译模型中的内容:

var $belongsTo = 'Term';

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

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

4

1 回答 1

0

我假设您正在寻找的是CakePHP 的 counterCache(向下滚动几行)。它会自动记录该模型有多少相关项目。

于 2012-11-14T15:04:56.417 回答