2

私はすべてを試したような気がするので、今あなたに来ます。

私は自分のデータを注文しようとしていますが、うまくいきません。Cake は初めてです。

これは私のコードです:

$this->set('threads', $this->paginate('Thread', array(
        'Thread.hidden' => 0,
        'Thread.forum_category_id' => $id,
        'order' => array(
            'Thread.created' => 'desc'
        )
    )));

これは SQL エラーを生成します。これが最後の興味深い部分です。

AND `Thread`.`forum_category_id` = 12 AND order = ('desc') ORDER BY `Thread`.`created` ASC LIMIT 25

どうすればこれを修正できますか? 作成されたフィールドは、明らかにデータベースに存在します。:/

4

4 に答える 4

9

conditions複数のフィルター (順序、制限など) を使用する場合は、キーを渡す必要があります。条件を指定するだけの場合は、それを第 2 パラメーターとして直接渡すことができます。

これはそれを行う必要があります:

$this->set('threads', $this->paginate('Thread', array(
        'conditions' => array(
            'Thread.hidden' => 0,
            'Thread.forum_category_id' => $id
        ),
        'order' => array(
            'Thread.created' => 'desc'
        )
    )));

またはおそらくもう少し明確です:

$this->paginate['order'] = array('Thread.created' => 'desc');
$this->paginate['conditions'] = array('Thread.hidden' => 0, ...);
$this->paginate['limit'] = 10;
$this->set('threads', $this->paginate());

エラーが発生した場合public $paginate;は、コントローラーの先頭に追加してください。

于 2012-12-10T20:41:38.407 に答える
3

試す

$this->set('threads', $this->paginate('Thread', array(
        'Thread.hidden' => 0,
        'Thread.forum_category_id' => $id
    ),
    array(
        'Thread.created' => 'desc'
    )
));

私はケーキの達人ではありません。

編集。はい、そうです。Cakeマニュアルの抜粋:

注文に使用するフィールドを制御... $this->paginate('Post', array(), array('title', 'slug'));

したがって、order は 3 番目の引数です。

于 2012-12-10T20:29:05.007 に答える