Koneksi ke banyak database biasanya diperlukan apabila kalian akan melihat suatu data pada database lain dalam satu aplikasi yang sama, mutlak ini akan digunakan. Pada artikel kali ini saya akan membahas bagaimana membuat koneksi Multiple Database pada codeigniter, mengapa codeigniter (karena framework fovorit saya ;) ). Pada dasarnya Codeiginter telah mendukung multiple database connection, tetapi saya akan memberi sedikit tips agar website kalian yang sudah berjalan saat ini tidak perlu merubah koneksinya satu - satu secara manual, loh mengapa? ini dikarenakan koneksi multi database pada codigniter dilakukan secara manual seperti contoh di bawah ini

$this->load->database("nama_group_database1", TRUE);

$this->load->database("nama_group_database2", TRUE);

nama_group_database adalah pendeklarasian variable group_name pada koneksi database kalian, masih belum ngerti? OK kalau melihat variable dibawah mungkin kalian akan tau

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'toor';
$db['default']['database'] = 'db_agenda';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

lihat bagian yang tercetak yang saya maksud adaah variable active_group (database.php), Koneksi secara menual akan sangat mengganggu bila website kalian sudah production alias telah terpublikasi nggak mungkinkan kalian mengganti koneksi satu per satu. Mengingat koneksi database ke dua adalah minor atau jarang - jarang digunakan (dalam kasus ini) saya jadikan satu dalam satu controller.

Sekarang kita akan coba konfigurasi multiple database :

1. Tambahkan koneksi database pada file database.php misalkan seperti dibawah

$active_group = 'forum';
$active_record = TRUE;

$db['forum']['hostname'] = 'localhost';
$db['forum']['username'] = 'root';
$db['forum']['password'] = '';
$db['forum']['database'] = 'db_forum';
$db['forum']['dbdriver'] = 'mysql';
$db['forum']['dbprefix'] = '';
$db['forum']['pconnect'] = FALSE;
$db['forum']['db_debug'] = TRUE;
$db['forum']['cache_on'] = FALSE;
$db['forum']['cachedir'] = '';
$db['forum']['char_set'] = 'utf8';
$db['forum']['dbcollat'] = 'utf8_general_ci';
$db['forum']['swap_pre'] = '';
$db['forum']['autoinit'] = TRUE;
$db['forum']['stricton'] = FALSE;


$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'db_website';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Ingat letakkan koneksi baru diatas default koneksi, lalu ubah pconnect menjadi FALSE.

2. Pastikan pada autoload.php (libraries) telah ada database agar diload secara otomatis oleh codigniter, bila sudah silahkan lewati tahap ini.

3. Pada default controller buat fungsi konstruktor seperti berikut

private $forum;

function __construct(){
     parent::__construct();

     $this->forum = $this->load->database("forum",TRUE); // true digunakan agar active record dapat berjalan
}

kemudian pada fungsi index kalian dapat membuat query database seperti biasa

public function index(){
    $q1 = $this->db->get("nama_table");
    $default = $q1->result();


    $q2   = $this->forum->get("nama_table_forum");
    $res = $q2->result();

    print_r($default);

    print_r($res);
}

Dari sini kalian telah berhasil membuat 2 database saling terkoneksi.Mengapa Pconnect di matikan? karena Persistence Connect tidak mendukung multi koneksi database (klo tidak salah begitu). Bagaimana tips yang simple bukan? Multiple database codeigniter bisa juga kalian terapkan lebih dari 2 database tinggal kalian pintar - pintar mengembangkannya saja.

 

Catatan :

1. Kalian harus mendeklarasikan load database pada tiap konstruktor class.

2. Pada artikel ini saya menggunakan CI 2.1.0.

 

Happy coding