Migration & Seeder pada CodeIgniter 4 (CI4)

๐Ÿงฉ Migration & Seeder pada CodeIgniter 4 (CI4)

Manajemen struktur dan data awal database dengan cara otomatis, efisien, dan mudah dipelihara.

Migration dan Seeder di CodeIgniter 4 membantu kita mengelola struktur dan data database tanpa perlu query SQL manual. Migration digunakan untuk membuat atau mengubah tabel, sedangkan Seeder digunakan untuk mengisi data awal seperti admin default atau data dummy.

๐Ÿ“˜ 1. Konsep Migration

Migration bekerja layaknya version control untuk database Anda. Setiap perubahan struktur tersimpan dalam file migration, sehingga pengembang lain dapat memperbarui database dengan mudah menggunakan perintah sederhana.

๐Ÿ› ๏ธ Contoh Membuat Migration

Buka terminal pada root proyek Anda, lalu ketik:

php spark make:migration CreateUsersTable

Edit file yang dihasilkan di folder app/Database/Migrations/ menjadi seperti ini:

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateUsersTable extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type'           => 'INT',
                'constraint'     => 11,
                'unsigned'       => true,
                'auto_increment' => true,
            ],
            'username' => [
                'type'       => 'VARCHAR',
                'constraint' => 100,
            ],
            'password' => [
                'type'       => 'VARCHAR',
                'constraint' => 255,
            ],
            'level' => [
                'type'       => 'ENUM("admin","user")',
                'default'    => 'user',
            ],
            'created_at DATETIME DEFAULT CURRENT_TIMESTAMP',
        ]);

        $this->forge->addKey('id', true);
        $this->forge->createTable('users');
    }

    public function down()
    {
        $this->forge->dropTable('users');
    }
}

โ–ถ๏ธ Menjalankan Migration

Setelah selesai, jalankan perintah berikut untuk membuat tabel di database:

php spark migrate

Jika ingin membatalkan (rollback):

php spark migrate:rollback

๐ŸŒฑ 2. Konsep Seeder

Seeder digunakan untuk mengisi data awal ke dalam tabel. Misalnya, saat pertama kali menjalankan aplikasi, Anda ingin otomatis membuat akun admin dan user.

๐Ÿ› ๏ธ Membuat Seeder

Ketik perintah berikut di terminal:

php spark make:seeder UserSeeder

Edit file di app/Database/Seeds/UserSeeder.php:

<?php

namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class UserSeeder extends Seeder
{
    public function run()
    {
        $data = [
            [
                'username' => 'admin',
                'password' => password_hash('admin123', PASSWORD_DEFAULT),
                'level'    => 'admin'
            ],
            [
                'username' => 'user1',
                'password' => password_hash('user123', PASSWORD_DEFAULT),
                'level'    => 'user'
            ]
        ];

        $this->db->table('users')->insertBatch($data);
    }
}

โ–ถ๏ธ Menjalankan Seeder

Untuk mengisi data ke tabel users, jalankan perintah berikut:

php spark db:seed UserSeeder

โš™๏ธ 3. Praktik Gabungan Migration & Seeder

Agar lebih efisien, Anda bisa menjalankan migration dan seeder sekaligus dalam satu langkah:

php spark migrate && php spark db:seed UserSeeder

Dengan cara ini, database akan otomatis dibuat dan diisi data awal tanpa membuka phpMyAdmin.

๐Ÿงช 4. Latihan Praktik Langsung

  1. Buka terminal dan pastikan Anda berada di folder proyek CI4 Anda.

  2. Buat migration baru untuk tabel products menggunakan perintah:

    php spark make:migration CreateProductsTable

     

  3. Tambahkan field seperti id, name, price, dan stock di dalam method up().

  4. Jalankan migration:

    php spark migrate

     

  5. Selanjutnya buat seeder:

    php spark make:seeder ProductSeeder

     

  6. Isi file seeder dengan data contoh produk, lalu jalankan:

    php spark db:seed ProductSeeder

     

  7. Buka phpMyAdmin untuk melihat bahwa tabel products sudah berisi data otomatis.

๐Ÿ’ก 5. Tips Tambahan

  • Gunakan Migration setiap kali mengubah struktur tabel agar dapat dilacak dan dibatalkan kapan saja.

  • Gunakan Seeder untuk data awal seperti akun admin, daftar kategori, atau data percobaan.

  • Kombinasikan dengan Model agar data dapat langsung digunakan di aplikasi Anda setelah migrasi.

โœ… Kesimpulan

Dengan Migration dan Seeder, pengelolaan database di CodeIgniter 4 menjadi lebih sistematis, cepat, dan mudah dikontrol. Anda tidak perlu lagi membuat tabel secara manual karena semua sudah dapat diatur dari terminal dengan satu perintah.