Migrasi Database dengan CodeIgniter 4
CodeIgniter 4 menyediakan fitur migrasi database untuk mengelola perubahan skema database secara terorganisir. Dengan migrasi, Anda dapat melacak perubahan tabel, kolom, dan data seed dengan mudah, serta memindahkan database antar lingkungan pengembangan.
1. Apa Itu Migrasi Database?
Migrasi database adalah cara untuk mengelola perubahan skema database dalam kode. Fitur ini memungkinkan Anda membuat, mengubah, atau menghapus tabel dan kolom dengan menggunakan skrip PHP. Migrasi sangat berguna untuk tim pengembang yang bekerja pada aplikasi dengan skema database yang terus berkembang.
2. Persiapan Migrasi di CI4
Pastikan Anda sudah mengatur koneksi database di file .env
:
database.default.hostname = localhost
database.default.database = ci4db
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
3. Membuat File Migrasi
Buat file migrasi baru dengan perintah berikut:
php spark make:migration CreateUsersTable
File migrasi akan dibuat di direktori app/Database/Migrations
:
app/Database/Migrations/
├── YYYY_MM_DD_HHMMSS_CreateUsersTable.php
4. Menulis Migrasi
Edit file migrasi untuk mendefinisikan tabel users
:
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class CreateUsersTable extends Migration {
public function up() {
$this->forge->addField([
'id' => [
'type' => 'INT',
'constraint' => 5,
'unsigned' => true,
'auto_increment' => true,
],
'username' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'email' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'password' => [
'type' => 'VARCHAR',
'constraint' => '255',
],
'created_at' => [
'type' => 'DATETIME',
'null' => true,
],
'updated_at' => [
'type' => 'DATETIME',
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('users');
}
public function down() {
$this->forge->dropTable('users');
}
}
?>
5. Menjalankan Migrasi
Jalankan migrasi untuk membuat tabel:
php spark migrate
Jika berhasil, tabel users
akan dibuat di database Anda.
6. Melihat Status Migrasi
Gunakan perintah berikut untuk melihat status migrasi:
php spark migrate:status
7. Membatalkan Migrasi
Jika Anda ingin membatalkan migrasi, jalankan perintah berikut:
php spark migrate:rollback
8. Data Seeding
CodeIgniter 4 juga mendukung data seeding untuk mengisi tabel dengan data awal.
8.1 Membuat Seeder
Buat file seeder dengan perintah berikut:
php spark make:seeder UserSeeder
Edit file app/Database/Seeds/UserSeeder.php
:
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class UserSeeder extends Seeder {
public function run() {
$data = [
[
'username' => 'admin',
'email' => 'admin@example.com',
'password' => password_hash('admin123', PASSWORD_BCRYPT),
],
[
'username' => 'user',
'email' => 'user@example.com',
'password' => password_hash('user123', PASSWORD_BCRYPT),
],
];
$this->db->table('users')->insertBatch($data);
}
}
?>
8.2 Menjalankan Seeder
Jalankan seeder dengan perintah berikut:
php spark db:seed UserSeeder
9. Best Practice Migrasi
- Gunakan nama migrasi yang deskriptif untuk memudahkan pengelolaan.
- Jangan lupa menulis metode
down
untuk memastikan migrasi dapat dibatalkan. - Selalu buat cadangan database sebelum menjalankan migrasi atau rollback.
Kesimpulan
Migrasi database di CodeIgniter 4 memungkinkan Anda mengelola skema database dengan mudah dan terorganisir. Fitur ini sangat bermanfaat untuk pengembangan aplikasi skala kecil hingga besar.