
只今、CakePHP 2.xのお勉強中。
ちょっとしたアイデアを試したくて動的にDBを切り替える方法がないかと調べた結果
/lib/Cake/Model/Datasource/DboSource.php内の public function reconnect で出来ることが解った。
とりあえず上手くいったので忘れないようにメモ書き。
AppModel.phpに追記
class AppModel extends Model { public function setDb($dbName,$DbConfig='default') { $this->setDataSource($DbConfig); $db = ConnectionManager::getDataSource($this->useDbConfig); $db->reconnect(array('database' => $dbName)); } }Controllerから切り替える
// 切り替えたいDB名 $dbName = 'test02'; // Config内のdatabase.phpでセットした接続設定を切り替える。defaultの場合は省略可 $DbConfig = 'hogehoge'; $this->Model->setDb($dbName,$DbConfig);
コメント