CodeIgniter3複数データベース対応

By | 2017/06/25

データベースは、読み込み、書き込みサーバーを分けるのが一般的です。
よってCodeIgniterでも別々のデータベースにアクセスできる必要があります。
CodeIgniterではデータベースへの設定を用意しておくだけで簡単に複数のデータベースへアクセスできるようになります。
しかし実装するときにデータベースを区別して使用するのはエンジニアの仕事なので早めに設定しておくべきでしょう。

具体的な作業は
1.設定ファイルを変更する
2.データベースを区別して実装する
ということになります。

1.設定ファイルを変更する

設定ファイルはapplication/config/database.phpです。これを変更します。
設定すべき変数は2つあり
$active_group = ‘default’;
$db[‘default’] = array(
// データベースの設定
);
です。

active_group は使用するグループ名を登録します。複数ある場合はarray()で設定します。
db にはデータベースの設定をします。複数ある場合は違う名前のグループ名で設定を追加します。

2.データベースを区別して実装する

以下を呼ぶことでデータベースに接続され使用できる状態になります。
$this->load->database();

database()には引数が設定できます。
database(グループ名, 戻り値を返すかどうか)

引数がない場合は、$active_groupの設定が反映されます。active_groupが配列で設定されている場合は設定が必須となります。

また、第二引数をTRUEに設定しておくと戻り値得られるので、実装するとき、これで使い分けることができます。
$reader = $this->load->database(‘reader’, TRUE);
$writer = $this->load->database(‘writer’, TRUE);


コメントを残す

メールアドレスが公開されることはありません。