とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

cake焼きました(6)

重大な間違いに気付きました…
それは…


実はcakePHP1.2をつかっていたことです。
なので改めてページャに挑戦しました。
前はこうだったからと先入観で始めず環境を確認することは重要ですね><。。


まずはモデルへpaginateの実装。
なんも記載していないとデフォルトの全部取得が適用されるっぽいです。
なのでここでは記載する。

findAll($conditions, $field, $order, $limit, $page, $recursive);
    }

    function paginateCount($conditions, $recursive = null)
    {
        $recursive = 0;
        $field = array();
        $limit = null;
        $page = null;
        $results = $this->findAll($conditions, $recursive);
        return count($results);
    }


次にコントローラの実装方法
まずはメソッドの前にpaginateの初期値を設定しておいて、
メソッドの中で詳しく定義することで、
一つのコントローラーで違ったDBのアクセスができます!


このでは1ページ3件表示したいけど、こっちでは1ページ12件表示したい等々

class HogesController extends AppController
{
    var $name = 'Hoges';
    var $uses = array('Hoge');
    var $paginate = array();

    function more()
    {
        $this->paginate = array(
                        'conditions' => array('1 = 1 GROUP BY p_id'),
                        'limit' => 12,
                        'order' => array('Hoge.id' => 'DESC'),
                        );
        $nuries = $this->paginate('Hoge');
        $this->set('hoges', $hoges);
        $this->render('more');
    }

    function detail()
    {
        $hogeid = $this->params['url']['id'];
        $this->set('hogeid', $hogeid);
        $pid = $this->params['url']['p_id'];

        $this->paginate = array(
                        'conditions' => array('Hoge.p_id' => $pid),
                        'limit' => 3,
                        'order' => array('Hoge.id' => 'DESC'),
                        );
        $nuries = $this->paginate('Hoge');
        $this->set('hoges', $hoges);
        $this->render('detail');
    }

view部分については次回へつづく!