Edited at

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をその都度変えたいとか

そんな用途にはもってこいだと思っています。