Cakeのpagenateヘルパーは便利なんだけど、ちょっといじりたいときはすごくわかりにくい。
コントローラーでは普通
$this->paginate = array( 'conditions'=>array(), 'limit'=>30, ・・・・・略・・・・ ); $this->set('rows', $this->Paginator->paginate());
コントローラーと同じ名前のモデル…ではなく、正確には$usesで最初に指定したモデルを使う場合だったらこれでOK。
コントローラーと同じ名前のモデルという説明がおおいので、これでハマる人が結構いるらしい。
じゃあ、違うモデルを使うには。。。
$this->set('rows', $this->Paginator->paginate('Model',array('conditions'=>array('status'=>1),'limit'=>30) ));
これも誰しも1回はハマるであろう罠。paginateの第2引数はconditionsしか指定できないのでこれはNG!
正解は
$this->set('rows', $this->Paginator->paginate('Model',array('status'=>1) ));
としかできない。
じゃ、細かい設定どうするのかというと。
$this->paginate = array('Model'=>( 'conditions'=>array(), 'limit'=>30, ・・・・・略・・・・ ) ); $this->set('rows', $this->Paginator->paginate('Model'));
という感じで$this->pagenateにモデル名の配列を作ってそこに設定をいれればよいようです。
直感的にわかりにくい仕様。
conditionsとかlimitとかいうモデルがあったらどうなるんでしょうね…?