Setelah beberapa hari lalu kita membahas cara Koneksi Database Codeigniter 3, maka kali ini kita akan membuat multiple koneksi database. Contoh kasus, apabila dalam aplikasi memiliki 2 database yang saling berhubungan. Misalkan saja, database pertama adalah untuk data history sedangkan database kedua merupakan master data. Ok, langsung saja kita praktek kan. Namun apabila Anda masih belum paham mengenai koneksi database pada Codeigniter 3, Anda bisa baca artikel di Koneksi Database Codeigniter 3.
Yang kita butuhkan adalah menambah beberapa code pada file database.php pada direktori application/config. Berikut adalah tambahan codenya :
$db['secondary'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'databawe_second', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
Pada baris code di atas, kita lihat hampir sama persis dengan pengaturan koneksi secara bawaan. Yang membedakan adalah nama koneksinya. Pada koneksi kedua, kita menggunakan nama secondary. Pada code di atas, intinya juga sama, terdapat pada baris berikut ini :
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '', 'dbdriver' => 'mysqli',
Sedikit penjelasan pada code di atas adalah sebagai berikut :
- hosname adalah host tempat database berada. Bisa juga menggunakan alamat IP.
- username adalah username dari database yang akan disgunakan.
- password adalah password dari database yang diginakan.
- database adalah nama database yang akan digunakan.
- dbdriver adalah jenis koneksi database yang digunakan. Pada code di atas akan terkoneksi ke MySql.
Kemudian untuk penggunaannya pada database yang kedua adalah sebagai berikut :
-
Pada Controller
Pada file controller, kita akan membuat semecam jembatan untuk memproses query yang ada pada file model. Berikut codenya :
defined('BASEPATH') OR exit('No direct script access allowed'); class Latihan extends CI_Controller { public function coba() { $arr= [ 'table' => 'nama_table' ]; $query = $this->MLatihan->getData($arr)->result(); var_dump($query); }
Setelah itu, simpan file di atas dengan nama Latihan.php. Sedikit penjelasan di atas :
- Class Latihan adalah nama class yang penamannya harus sesuai dengan nama file.
- function coba nama fungsi yang akan diproses.
- $arr adalah nama variabel untuk membuat array yang akan dikirimkan ke file model. Anda dapat memodifikasinya. Anda bisa baca pada artikel Membuat Read Data Global Model pada Codeigniter 3.
- $query adalah nama variabel untuk menampilkan hasil dari kiriman query.
- MLatihan adalah nama file model yang akan memproses query.
- var_dump untuk menampilkan variabel $query.
-
Pada Model
Pada model, kita akan membuat file yang berfungsi untuk memproses query dari array yang diterima. Berikut adalah codenya :
defined('BASEPATH') OR exit('No direct script access allowed'); class MLatihan extends CI_Model { function getData($data=''){ $newDb = $this->load->database('secondary', TRUE); $newDb->from($data['table']); return $newDb ->get(); }
Kemudian simpan file di atas dengan nama MLatihan.php. Sedikit penjelasan code di atas :
- Class MLatihan adalah nama class model dan penamaannya harus sama dengan nama file.
- getData adalah adalah nama fungsi yang akan memproses query yang ada di dalamnya. Dalam hal ini, fungsi tersebut dipanggil dari file controller yang telah kita buat di atas.
- $newDb adalah nama variabel guna untuk membuka dan melakukan koneksi pada database kedua.
- $newDb->from adalah query builder untuk menampilkan data dari database secondary.
Setelah semua selesai disimpan, sekarang coba Anda buka menggunakan browser yang Anda gunakan. Apabila berhasil, maka akan muncul data dari table yang ingin di tampilkan.
Nah mudah bukan? Demikianlah cara membuat Multiple Koneksi Database Codeigniter 3. Semoga bermanfaat untuk Anda.
Leave a Reply