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()
Method | Output |
---|---|
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.