Yii に関する覚え書き (複数のDBコネクション)

DBサーバへのコネクションを複数持ちたい場合がある。例えば、セッションデータとアプリケーションのデータが別のDBサーバにある場合など。デフォルトの設定ファイルでは一つしか設定がないが、2 つ以上持たせられるのか。

protected/config/main.php を編集。

テスト1

'db'=>array(
  'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
'db2'=>array(
  'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive2.db',
),

// run
echo get_class(Yii::app()->db);  // => CDbConnection
echo get_class(Yii::app()->db2); // => CException : Object configuration must be an array containing a "class" element.

"class" 要素が必要らしい。1 つ目の設定にはないのに。

テスト2

'db'=>array(
   'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
'db2'=>array(
  'class'=>'CDbConnection',
  'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive2.db',
),

// run
echo get_class(Yii::app()->db);  // => CDbConnection
echo get_class(Yii::app()->db2); // => CDbConnection

うまくいった。