複数のデータベースに接続する
次のコードで、現在のグローバルな concrete5 のデータベース接続を取得できることはお伝えしました。
\Database::connection()
それでは、複数のデータベースにアクセスしたい場合も簡単にできます。concrete5 のデータベースに、単にカスタムビジネスデータベーステーブルを追加すれば、Database::connection() でアクセスできるようになります。しかし、もし concrete5 のデータベースにマイグレートできないレガシーなデータベースにアクセスしたい場合はどうすればよいでしょうか。その場合、追加のデータベース接続が必要です。
幸いなことに、設定を追加するだけで可能です。通常、application/config/database.php ファイルには、次のようにひとつの "concrete" データベース接続が定義されています。
return array(
'default-connection' => 'concrete',
'connections' => array(
'concrete' => array(
'driver' => 'c5_pdo_mysql',
'server' => 'localhost',
'database' => 'database',
'username' => 'testuser',
'password' => 'testpassword',
'charset' => 'utf8',
)
),
);
単に connections 配列にもうひとつのデータベースを追加すればOKです。次は、"pricing" という名前でレガシーなデータベースへの接続を追加する例です。
return array(
'default-connection' => 'concrete',
'connections' => array(
'concrete' => array(
'driver' => 'c5_pdo_mysql',
'server' => 'localhost',
'database' => 'database',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
),
'pricing' => array(
'driver' => 'c5_pdo_mysql',
'server' => 'secure-pricing.wherever.com',
'database' => 'pricing_db',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
),
),
);
そして、通常の
$db = \Database::connection();
の代わりに、次のように
$db = \Database::connection('pricing');
記述すれば、追加のデータベースに接続が可能です。