cakephp 1.3.3で開発しております。
今回は先日わたくしがハマった事象についてお話します。多少書きなぐり気味ですが><許してください。
前提条件
1.A_controllerでpaginateしている
2.paginate対象のモデル(User)には色々なモデルが関連付けられているが、その1部であるHogehogeというモデルをLEFTJOINではなく、INNERJOINで連結したいので一度unbindする
3.このメソッドが呼ばれる前にapp_controllerのbeforeFilter()にUserモデルで検索をかけている箇所がある。そこはContainableBehaviorが使われている
という前提でした。
1.A_controllerのpaginateの箇所はこんなかんじ。
$this->User->unbindModel(array('belongsTo'=>array('Hogehoge')), false);//第2引数をfalseにすることでモデルの関連性を維持させる
'joins'=>array(
array(
'type' =>'INNER',
'fields'=>array('Hogehoge.name'),
'table'=>'`Hogehoges`',
'alias'=>'`Hogehoge`',
'conditions'=>array(
'Hogehoge.id = Hogehoge.user_id',
),
),
),
//このあとpaginate実行
でハッピー! にならなかった・・・というお話。