Migrasi Database dengan CodeIgniter 4

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.

Check Also

Membuat Widget dengan View Cells di CodeIgniter 4

Membuat Widget dengan View Cells di CodeIgniter 4 CodeIgniter 4 memperkenalkan fitur View Cells, yang …

Verified by MonsterInsights