Di tutorial ini kita akan membahas tentang penggunaan migration di codeigniter 4,cara membuat dan menggunakannya serta apa saja keuntungan jika kita menggunakan migration dibanding cara biasa.
Apa itu Migration di Codeigniter 4
Migration adalah fitur di codeigniter 4 yang berfungsi sebagai control version system untuk database,dengan migration mengelola skema database akan lebih rapi dan tertata terutama jika bekerja dalam tim.
Kenapa harus menggunakan migration?
Mungkin bagi mereka yang terbiasa menggunakan aplikasi manajemen database seperti phpMyAdmin,HeidiSQL,Navicat dll ,merasa sudah cukup dengan fungsi tools tersebut untuk membuat tabel dan mengubah struktur tabel di database.Ada dua point penting menurut saya kenapa harus menggunakan migration.
1.Version Control Untuk Database Kita
Jika anda pernah menggunakan GIT,fungsinya sama untuk mengetahui perubahan apa saja yang sudah dilakukan ke database.Jadi kita ada history tentang perubahan yang pernah dilakukan di database,apalagi jika kita sudah lama mengubahnya bisa jadi kita lupa namanya juga manusia.Kita juga bisa melakukan rollback untuk kembali ke perubahan sebelumnya jika dibutuhkan.
2.Memudahkan jika bekerja dalam tim
Jika kita bekerja secara tim maka migration akan sangat membantu,yang tadinya setiap anggota saling kirim file SQL dan harus memberitahu anggota tim lain apa saja yang dirubah.Dengan migration kita tinggal melakukan perintah php spark migrate maka struktur terbaru akan berubah didatabase,di migration juga bisa ditambahkan comment jadi anggota tim lain tinggal membaca di comment field apa yang berubah. Juga bisa mengetahui siapa yang menambahkan field baru jika dikombinasikan dengan version control seperti GIT.
Cara Membuat dan Menggunakan Migration
Sebelum melakukan migration kita perlu melakukan konfigurasi database pada file .env,biasanya saat download file bernama env rubah dengan menambahkan titik didepan menjadi .env .
Jangan lupa juga membuat database disini contoh database ci4login.Buka file .env,kemudian cari bagian database.
database.default.hostname = localhost
database.default.database = ci4login
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi
Sesuaikan dengan setting database kalian,pastikan tidak ada tanda # didepan karena itu tandanya perintah dicomment.Kemudian buka terminal atau CMD dan arahkan ke folder project.Format penulisan pembuatan migration:
php spark migrate:create nama_migration
Sebagai contoh kita akan membuat tabel users,maka kita akan mengetikkan perintah
php spark migrate:create users
Jika berhasil maka akan muncul tulisan seperti dibawah ini.
Migration file bisa dilihat di folder app/Database/Migrations
Di dalam migration terdapat dua method secara otomatis yaitu up untuk membuat atau menambah field table dan down untuk menghapus atau rollback struktur. Pada fungsi up() kita akan menentukan field yang dipakai.Rubah file migration tadi menjadi seperti dibawah ini.
<?php namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class Users extends Migration
{
public function up()
{
//list field
$this->forge->addField([
'id' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => TRUE,
'auto_increment' => TRUE
],
'username' => [
'type' => 'VARCHAR',
'constraint' => '255',
],
'password' => [
'type' => 'VARCHAR',
'constraint' => '255',
],
]);
//primary key
$this->forge->addKey('id', TRUE);
//nama tabel
$this->forge->createTable('users');
}
//--------------------------------------------------------------------
public function down()
{
//
}
}
Jika ingin melihat semua lihat fitur untuk migration bisa dilihat langsung di dokumentasi resmi https://codeigniter4.github.io/userguide/dbmgmt/index.html
Setelah itu kita jalankan perintah : php spark migrate untuk menjalankan migration
Jika keluar seperti gambar diatas maka migration berhasil.Sekarang kita coba masuk ke phpmyadmin dan lihat database ci4login.
Bisa dilihat ada 2 tabel hasil dari migration yang pertama table user yang kita buat , dan satu lagi tabel migrations yang secara otomatis dibuat CI4 untuk menyimpan semua log migrations.
Yeah sampai disini kita sudah berhasil membuat tabel dengan migration.