cake-logo
只今、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);