
CakePHPのPaginate(ページ送り機能)でjoinを使う場合です。
とりあえずMySQL内のテーブルは
users, works, messagesの3つでLEFT JOINのケース
コントローラのメソッド内でこんな感じで指定してやると。
$this->paginate = array(
'User' => array(
'conditions' => array(),
'limit' => 24,
'order' => array('User.user_id' => 'desc'),
'joins' => array(
array('type' => 'LEFT', 'alias' => 'Work', 'table' => 'works',
'conditions' => 'User.user_id = Work.user_id')
array('type' => 'LEFT', 'alias' => 'Message', 'table' => 'messages',
'conditions' => 'Work.user_id = Message.user_id')
))
);
こんなSQLになります
SELECT
取得カラム名
FROM
`users` AS `User`
LEFT JOIN
works AS `Work`
ON
(`User`.`user_id`=`Work`.`user_id`)
LEFT JOIN
messages AS `Message`
ON
(`Work`.`user_id`=`Message`.`user_id`)
ORDER BY
`User`.`user_id` desc LIMIT 24
あなたは神だ!!
type:コメント [ ]