PHP
SQL
cakephp2

CakePHPでModelを使わずにDBを見る

More than 3 years have passed since last update.

SQL大好きな人がCakePHPでもSQLを書きたい、Modelを使いたがらない人向け

Modelを使わずにDB参照する例
<?php
App::uses('AppController', 'Controller');
/**
 * Test Controller
 *
 */
class TestController extends AppController {

    public function index()
    {
        App::import('Model','ConnectionManager');
        $db =ConnectionManager::getDataSource('default');
        $result=$db->query('select * from datatable1');

        echo "<pre>";
        print_r($result);
        echo "</pre>";

        exit();
    }
}

ConnectionManager::getDataSource()で指定してる default とは
Config/database.phpで定義したDB設定です。
ということは、ここを書き換えるだけで、複数のDBを見に行くことができるわけです

複数DBを参照する例
    App::import('Model','ConnectionManager');
//通常のDBを参照する
    $db1 =ConnectionManager::getDataSource('default');
    $result=$db1->query('select * from datatable1 where id=1');

//違うDBを参照する
    $db2 =ConnectionManager::getDataSource('otherdb');
    $result=$db2->query('select * from datatable2 where id=2');

何かしらの都合でDBが分散しているとか、
負荷分散でアクセスするDBをその都度変えたいとか
そんな用途にはもってこいだと思っています。