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とかいうモデルがあったらどうなるんでしょうね…?
 
  
  
  
  
 
       
      