Yii Frameworkで複数データソースを扱う

Yii Framework第2弾。

負荷分散などの理由で、データベースを複数に分けたりすること、ありますよね。しかし、やり方がYiiの日本語ガイドには書いてなかったので、書いてみます。

やり方は簡単で、protected/config/main.phpにちょこちょこっと記述するだけです。

// application components
'components'=>array(
	'db'=>array(
		'connectionString' => 'mysql:host=hostname1;dbname=hoge',
		'emulatePrepare' => true,
		'enableParamLogging' => true,
		'username' => 'user1',
		'password' => 'pass1',
		'charset' => 'utf8',
	),
	'db_fuga'=>array(
		'class' => 'CDbConnection', // ここ重要
		'connectionString' => 'mysql:host=hostname2;dbname=fuga',
		'emulatePrepare' => true,
		'enableParamLogging' => true,
		'username' => 'user2',
		'password' => 'pass2',
		'charset' => 'utf8',
	),

これだけで、Yii::app()->dbと同様に、以下のような感じで使えるようになります。

Yii::app()->db_fuga; // fugaデータベース

ね、簡単でしょ?