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 に答える