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データベース
ね、簡単でしょ?