WordPress・WEB系の開発(プログラム)関係や技術情報ほか、技術情報全般を掲載

  • このエントリーをはてなブックマークに追加

CakePHP paginate で LEFT JOIN する方法

paginate で LEFT JOIN するには下記のようにします。

※例)PersonalテーブルにPrefテーブルをLEFT JOIN してデータリストを取得する

<?php
App::uses('AppController', 'Controller');

/**
 * 
 */
class SearchController extends AppController
{
    public $uses = array('Personal', 'Pref');
    public $joins = array(
        array(
            'table'      => 'pref',
            'alias'      => 'Pref',
            'type'       => 'LEFT',
            'conditions' => array( 'Peronal.pref_id = Pref.pref_id' )
        )
    );
    public $fields = array('Personal.*', 'Pref.*');
    public $limit = 10;

    /**
     * 
     */
    public function index()
    {
        $this->paginate = array(
            'Personal' => array(
                'limit'      => $this->limit,
                'order'      => array('id' => 'desc'),
                'conditions' => array('status > 0'), 
                'joins'      => $this->joins,
                'fields'     => $this->fields,
            )
        );

        $data = $this->paginate();
        $this->set('list', $data);
    } 
}

※実行されるSQL:

SELECT `Peronal`.*, `Pref`.* 
FROM `personal` AS `Personal` 
LEFT JOIN `pref` AS `Pref` 
ON (`Personal`.`pref_id` = `Pref`.`pref_id`) 
WHERE status > 0 
ORDER BY `Personal`.`id` desc 
LIMIT 10

※環境情報:
サーバ・・・CORESERVER
CakePHP・・・CakePHP 2.4.6

– – –

【PR】吉祥寺のレイキを検索!ショップナビ吉祥寺
【PR】日本体育大学バスケ部情報!新人戦・リーグ戦・トーナメント

関連記事

コメントは利用できません。

アーカイブ