ユーザーやパスワードなどの設定は共通かつ使用データベースのみ変更したい場合、例えば日時によりデータベースを切り替えたい場合や、ローカルと別サーバーでのデータベース切り替えなどへの対処。
database.phpにいくつも似たような設定を用意するのは嫌だったので、使用する設定は1つとし、データベースのみ切り替える。
これで使用データベースの切り替えができた。
database.phpにいくつも似たような設定を用意するのは嫌だったので、使用する設定は1つとし、データベースのみ切り替える。
AppModel.php内での切り替え
使用するすべてのモデルのデータベースを一律で切り替えたかったため、AppModel.phpのコンストラクタ内で切り替えを実装。class AppModel extends Model{ public function __construct($id = null, $table = null, $ds = null) { // データソースへの参照を取得 $dbSource = ConnectionManager::getDataSource ($this->useDbConfig); // ローカル環境かどうかでデータベース名の切り替え if ($_SERVER ['REMOTE_ADDR'] == '127.0.0.1') { $dbName = 'local_db'; } else { $dbName = 'another_db'; } // データベース名の書き換え $dbSource->config ['database'] = $dbName; parent::__construct ($id, $table, $ds); } }
これで使用データベースの切り替えができた。
コメント