Dasar-dasar Database Migration CodeIgniter 4

Riris Bayu Asrori
5 min readJan 23, 2021

Sudah sekitar 2–3 tahun saya tidak menggunakan framework Codeigniter (CI) atau bahasa PHP pada umumnya, jadi sudah lama sekali tidak mengikuti perkembangan. Kebetulan beberapa waktu lalu ada teman meminta bantuan untuk mengerjakan web dengan CI 4, jadi saya coba mengulik kembali dokumentasinya. Jujur saja, dokumentasi CI dari dulu selalu menjadi favorit saya jika dibandingkan dengan dokumentasi framework lain. Setiap materinya selalu dijelaskan dengan padat dan juga dilengkapi dengan contoh baris program yang mudah dipahami.

Terakhir saya menggunakan CI yaitu masih versi 3, ketika melihat versi 4 ada beberapa perubahan yang menarik perhatian saya diantaranya dukungan penggunaan namespace, model database semakin menyerupai ORM, dan juga ada fitur migrasi database entah dulu di CI 3 sudah ada atau belum. Jika dibandingkan dengan framework sejenis seperti Laravel, fitur-fitur ini sudah disediakan sejak lama. Tentu Laravel dan CI tidak bisa begitu saja dibandingkan karena tingkat kompleksitasnya jauh berbeda. Tetapi perubahan pada CI 4 ini menunjukkan bahwa tim pengembangnya masih terus aktif mengikuti trending dan tidak ketinggalan jaman.

Mengenal database migration

Ketika memulai sebuah projek baru, yang biasanya dilakukan adalah dengan menganalisa sistemnya salah satunya adalah struktur dari database yang akan dibuat. Selesai dianalisa, tentunya struktur ini perlu direalisasikan. Secara umum ada dua cara yang sering dilakukan yaitu:

Menggunakan skrip file SQL

File SQL

Biasanya realisasi dilakukan langsung pada database dengan menggunakan aplikasi bantuan seperti phpmyadmin, dbeaver, datagrip jetbrain dan sebagainya. Kemudian database tersebut di eksport menjadi file dengan format .sql yang kemudian di distribusikan keseluruh tim developer.

  • Kelebihan: Cara ini mudah dilakukan karena aplikasi bantuan seperti phpmyadmin dan sejenisnya memiliki antar muka yang bisa dimengerti oleh pemula.
  • Kekurangan: Jika ada perubahan maka file SQL dibuat ulang dan didistribusikan kembali agar anggota tim menggunakan database yang sama.

Menggunakan skrip database migration

CI database migration

Jika membuat file migrasi tentunya kita secara manual mengetik definisi atribut data satu persatu, berbeda dengan menggunakan aplikasi bantuan yang sudah dibantu oleh antar muka. Meskipun membutuhkan usaha yang lebih banyak, membaca definisi data seperti ini jauh lebih mudah jika dibandingkan dengan file SQL (tergantung preferensi juga).

  • Kelebihan: Selain mudah dipahami, jika codebase telah menggunakan alat bantu versioning seperti Git maka begitu ada perubahan pada skrip migrasi maka seluruh developer bisa mendapatkan struktur database terbaru.
  • Kekurangan: Membutuhkan pemahaman yang mendalam mengenai struktur dan atribut data.

Membuat migrasi dengan Codeigniter 4

Pada CI4 file-file migrasi diposisikan pada folder app/Database/Migrations yang biasanya hanya berisi file .gitkeep saja.

Letak file migrations

Langkah-langkah pembuatan

Pada CI 4, kita telah disediakan CLI-tools bernama spark (mirip artisan pada laravel). Jadi buka terminal/commandprompt dan pastikan posisinya telah menunjukkan direktori aplikasi kita. Seperti gambar dibawah projek saya bernama latihan .

Direktori projek latihan

Mari kita buat tabel user.

  1. Jalankan perintah php spark migrate:create [filename] karena kita akan membuat tabel user, jadi [filename] diganti dengan user .
Generate file baru.
letak file
Isi file baru

2. Buka file baru tadi dan mulai mendefinisikan tabel user. Misalnya saja user memiliki id bertipe integer, memiliki username, email, dan juga password.

Kita definisikan tabel pada fungsi up() dan down()

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',
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('user');
}
public function down()
{
$this->forge->dropTable('user');
}

Dalam fungsi up() kita menambahkan field id, username, email, dan password. Kemudian id kita jadikan sebagai primary key. Terakhir tabel user di buat (create). Dan dalam fungsi down() maka keseluruhan tabel user akan di drop.

3. Sebelum kita lakukan migrasi ke database, pastikan dulu pengaturan koneksi database kita sudah benar pada file .env . Jika projek CI baru pertama kali dibuat biasanya file .env belum ada, kita harus menduplikat (copas) file env terlebih dahulu dan direname menjadi .env.

File .env
Kondisi awal file env

Kemudian hapus tanda pagar pada pengaturan yang ingin digunakan dan sesuaikan isinya.

database.default.hostname = localhost
database.default.database = latihan
database.default.username = root
database.default.password = ''
database.default.DBDriver = MySQLi

4. Jalankan php spark migrate dan tunggu proses berjalan hingga selesai.

Migrate tabel user

Cek tabel menggunakan aplikasi pembantu seperti phpmyadmin untuk melihat tabel yang dibuat.

Tabel User

Jika terjadi kegagalan/eror, biasanya perlu dipastikan kembali:

  1. File .env sudah benar (tidak ada typo) dan di save.
  2. File migrasi sudah di save.
  3. Nama tabel pada database sesuai dengan .env

Dokumentasi resmi: https://codeigniter4.github.io/userguide/dbmgmt/migration.html

Penutup

Sekian saja tulisan kali ini, saya harap dapat membantu rekan-rekan dalam memulai belajar atau menambah ilmu dalam menggunakan CodeIgniter. Bila ada salah dan materi yang saya lewatkan semoga dapat diperbaiki kedepannya.

--

--