Koneksi Multi Database di Codeigniter 3

Pendahuluan

Sebenarnya cara mengkoneksikan database di Codeigniter sudah tersedia di Codeigniter User Guide. Tetapi, saya akan sedikit menjelaskan cara koneksi multi database di codeigniter 3 agar semakin mempermudah anda dalam mempelajarinya.

Database

Pertama buat 2 buah database seperti berikut:
Database `data_siswa1` dan table `siswa` seperti berikut

data_siswa2.siswa
data_siswa1.siswa
atau anda juga bisa menggunakan kode sql di bawah ini
CREATE TABLE IF NOT EXISTS `siswa` (
  `nis` int(10) NOT NULL,
  `nama` varchar(100) NOT NULL,
  `kelas` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `siswa`
ADD PRIMARY KEY (`nis`);

INSERT INTO `data_siswa1`.`siswa` (`nis`, `nama`, `kelas`) VALUES ('121310001', 'John Legend', 'XII Multimedia'), ('121310002', 'James Arthur', 'XII Multimedia'), ('121310003', 'Maddi Jane', 'XII Multimedia');

Database `data_siswa2` dan table `siswa` seperti berikut
data_siswa2.siswa
data_siswa2.siswa
CREATE TABLE IF NOT EXISTS `siswa` (
  `nis` int(10) NOT NULL,
  `nama` varchar(100) NOT NULL,
  `kelas` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `siswa`
ADD PRIMARY KEY (`nis`);

INSERT INTO `data_siswa2`.`siswa` (`nis`, `nama`, `kelas`) VALUES ('121310004', 'Bruno Mars', 'XII RPL'), ('121310005', 'David Guetta', 'XII RPL'), ('121310006', 'Taylor Swift', 'XII RPL');

Struktur Folder

Download codeigniter di , kemudian extract dan rename menjadi 'datasiswa'


Code

Tambahkan database pada application/config/autoload.php pada baris $autoload['libraries'] = array(); menjadi $autoload['libraries'] = array('database');

Ubah file application/config/database.php seperti berikut:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
 'dsn' => '',
 'hostname' => 'localhost',
 'username' => 'root',
 'password' => 'maintenance11',
 'database' => 'data_siswa1',
 'dbdriver' => 'mysqli',
 'dbprefix' => '',
 'pconnect' => FALSE,
 'db_debug' => TRUE,
 'cache_on' => FALSE,
 'cachedir' => '',
 'char_set' => 'utf8',
 'dbcollat' => 'utf8_general_ci',
 'swap_pre' => '',
 'encrypt' => FALSE,
 'compress' => FALSE,
 'stricton' => FALSE,
 'failover' => array(),
 'save_queries' => TRUE
);

$db['data_siswa2'] = array(
 'dsn' => '',
 'hostname' => 'localhost',
 'username' => 'root',
 'password' => 'maintenance11',
 'database' => 'data_siswa2',
 'dbdriver' => 'mysqli',
 'dbprefix' => '',
 'pconnect' => FALSE,
 'db_debug' => TRUE,
 'cache_on' => FALSE,
 'cachedir' => '',
 'char_set' => 'utf8',
 'dbcollat' => 'utf8_general_ci',
 'swap_pre' => '',
 'encrypt' => FALSE,
 'compress' => FALSE,
 'stricton' => FALSE,
 'failover' => array(),
 'save_queries' => TRUE
);

Kode di atas adalah kode konfigurasi database, secara default hanya ada 1 group yaitu ‘default’. Karena kita ingin membuat koneksi lebih dari satu database maka kita harus menambahkan satu lagi seperti contoh di atas.
Kemudian buat sebuah model application/model/Siswa_model.php dan isikan dengan kode berikut:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Siswa_model extends CI_Model {
 // db2 digunakan untuk mengakses database ke-2
 private $db2;

 public function __construct()
 {
  parent::__construct();
         $this->db2 = $this->load->database('data_siswa2', TRUE);
 }
 public function get_db1()
 {
  return $this->db->get('siswa');
 }
 public function get_db2()
 {
  return $this->db2->get('siswa');
 }
} 

Perbedaan koneksi ke database 1 dan database 2, terletak pada $this->db atau $this->db2.
Buat sebuah controller application/controller/Siswa.php dengan isi seperti berikut.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Siswa extends CI_Controller {
public function index(){
// load siswa_model
$this->load->model('siswa_model');
// Database 1
$data['data1'] = $this->siswa_model->get_db1();
// Database 2
$data['data2'] = $this->siswa_model->get_db2();

$this->load->view('siswa', $data);
}
}

Buat sebuah view application/controller/siswa.php dengan isi seperti berikut.
<html>
<head>
<title>Koneksi Multi Database</title>
</head>
<body>

<h2>Database 1</h2>
<table>
<thead>
<th>NIS</th>
<th>Nama</th>
<th>Kelas</th>
</thead>
<tbody>
<?php
foreach($data1->result() as $siswa){
 echo "<tr>
 <td>$siswa->nis</td>
 <td>$siswa->nama</td>
 <td>$siswa->kelas</td>
</tr>";
}
?>
</tbody>
</table>

<h2>Database 2</h2>
<table>
<thead>
<th>NIS</th>
<th>Nama</th>
<th>Kelas</th>
</thead>
<tbody>
<?php
foreach($data2->result() as $siswa){
 echo "<tr>
 <td>$siswa->nis</td>
 <td>$siswa->nama</td>
 <td>$siswa->kelas</td>
 </tr>";
}
?>
</tbody>
</table>
</body>
</html>

Kesimpulan


Kesimpulan dari tutorial ini adalah dalam pengkoneksian lebih dari satu database di codeigniter. Hal yang terpenting yang harus kita setting yaitu grup database di database.php untuk konek ke database yang di tuju. Dan gunakan $this->load->database(nama group database); untuk memilih database.

Sekian tutorial dari saya silahkan download source code dari tutorial di atas di bawah ini.

Koneksi Multi Database di Codeigniter 3 Koneksi Multi Database di Codeigniter 3 Reviewed by Unknown on 21.22 Rating: 5