Lewati ke konten utama

Database di CodeIgniter

CodeIgniter menyediakan fitur lengkap untuk menghubungkan dan berinteraksi dengan database melalui Database Configuration, Query Builder, dan Model. Sistem ini mendukung berbagai jenis database seperti MySQL, PostgreSQL, SQLite, dan lainnya.


1. Konfigurasi Koneksi Database

Konfigurasi database disimpan dalam file: app/Config/Database.php

Contoh Konfigurasi MySQL:

public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'my_database',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
];

2. Mengakses Database Langsung (tanpa Model)

$db = \Config\Database::connect();
$query = $db->query("SELECT * FROM users");
$results = $query->getResult();

3. Menggunakan Query Builder

a. Select

$builder = $db->table('users');
$data = $builder->get()->getResult();

b. Where

$builder->where('status', 'aktif');
$data = $builder->get()->getResult();

c. Insert

$data = [
'username' => 'budi',
'email' => 'budi@example.com'
];
$builder->insert($data);

d. Update

$data = ['status' => 'nonaktif'];
$builder->where('id', 5);
$builder->update($data);

e. Delete

$builder->where('id', 5);
$builder->delete();

4. Metode getResult() dan getRow()

MethodOutput
getResult()Array of objects
getResultArray()Array of arrays
getRow()Satu object row
getRowArray()Satu row sebagai array

5. Menjalankan Query Manual

$query = $db->query("SELECT * FROM users WHERE id = ?", [3]);
$row = $query->getRow();

Gunakan binding parameter (?)` untuk menghindari SQL Injection.

6. Transactions

$db->transStart();

$db->table('orders')->insert($data1);
$db->table('payments')->insert($data2);

$db->transComplete();

if ($db->transStatus() === false) {
// transaksi gagal
}

7. Menggunakan Multiple Database

Di Database.php, tambahkan koneksi kedua:

public $db_kedua = [
'hostname' => 'localhost',
'username' => 'user2',
'password' => 'pass2',
'database' => 'db_kedua',
'DBDriver' => 'MySQLi',
];

Gunakan:

$db2 = \Config\Database::connect('db_kedua');
$builder = $db2->table('produk');
$data = $builder->get()->getResult();

8. Migration & Seeder

CodeIgniter juga mendukung Migration dan Seeder untuk mengelola struktur dan data awal database secara terprogram.