0

これが私がやろうとしていることです。私のテーブルsay(Courses)には、同じIDを持つ複数のエントリがあります。

paginateからデータを取得すると、すべてのレコードが表示されます。したがって、ID 5のレコードが3つある場合、レコード番号5が3回表示されます。

今私が欲しいのは、レコードを一度だけ表示することです。

オンラインで検索しましたが、何も見つかりません。

誰かがそのような問題に遭遇し、それに対する解決策を見つけた場合は、私に知らせてください。

ありがとう、

4

3 に答える 3

4

私は同様の問題を抱えていたので、あなたの問題に出くわしました。David Z の解決策はうまくいきませんでしたが、 $paginate のグループ変数がうまくいくことがわかりました。

上記のコードサンプルを使用すると、これが機能するはずだと思います。

$paginate = array(
            'Courses'    => array(
            'limit'    => 20,
            'fields' => array('Courses.id'),
            'conditions' => $cond,
            'group'   => array('Courses.id'),
            'order'    => array('Courses.id' => 'asc')
    )
    );

うまくいけば、私のために働いたソリューションにもう少し光を当てるために、私は会社に属するシステムを持っています. 私が持っているシステムについて、ユニークな会社のリストを取得したかったのです。これは私が使用した正確なコードであり、私のために働いた

$this->paginate = array ('fields' => array ('Company.*'),
                         'order' => array('Company.name' => 'ASC'),
                         'group' => array('Company.id'));
$this->set('companies', $this->paginate($this->Company->System));

これが役に立ったことを願っています

于 2012-11-30T04:39:59.320 に答える
1

CakePHP のクックブックを見ると、ページネーションのドキュメントに $paginate メンバーをオーバーライドできることが示されています。舞台裏では、これはモデルの find('all') のパラメーターを渡すのと似ています。必要な値を絞り込むために、distinct キーワードで関心のあるフィールドを明示的に返すようにパラメーターを設定してみてください。

class RecipesController extends AppController {

    var $paginate = array(
        'fields' => array('Model.field1', 'DISTINCT Model.field2')
    );

}
于 2012-04-18T21:56:53.207 に答える
0

だから、これが私のpaginate変数がどのように見えるかです:

var $paginate = array(
            'Courses'    => array(
                'limit'    => 20,
                'page'    => 1,
                'order'    => array(
                'Courses.id'    => 'asc')
),
);

条件変数は次のようになります。

        $cond = array("Courses.id LIKE "=>$this->data['id_search'],
        "Courses.length LIKE "=>$this->data['length_search'], 
        "Courses.marks LIKE "=>$this->data['marks']
        );

そして、これが私がページネーションと呼んでいる方法です。

$data = $this->paginate('CdmaRfReport',$cond);

やってみた

$paginate = array(
                'Courses'    => array(
                    'limit'    => 20,
                    'fields' => array('DISTINCT Courses.id'),
                    'page'    => 1,
                    'conditions' => $cond,
                    'group'   => array('id'),
                    'order'    => array(
                    'Courses.id'    => 'asc')
        )
        );

役に立たないようです。

私も試しました

$cond = array("DISTINCT Courses.id "=>$this->data['id_search'],
        "Courses.length LIKE "=>$this->data['length_search'], 
        "Courses.marks LIKE "=>$this->data['marks']
        );

このエラーでも、何か問題がある可能性があります。しかし、私はそれを理解することができません。

提案があれば教えてください。

于 2012-04-19T20:00:01.577 に答える