Migration adalah sebuah fitur yang ada pada laravel, migration merupakan Control Version System untuk database. Dengan menggunakan migration laravel, memungkinkan kita untuk mengelola database dengan lebih mudah, kita bisa membuat table data dengan lebih mudah dan cepat.
Migration akan membuat atau meng-generate file-file migration sebagai control system, file-file inilah yang bisa dikirim oleh programmer antara satu sama lain saat sedang membuat aplikasi.
Misalnya programmer A menangani proses pembuatan untuk data siswa, programmer B menangani proses pembuatan data guru dan programmer C menangani proses pembuatan data raport siswa. Jika programmer A melakukan perubahan pada table data siswa, programmer A ini tinggal mengirimkan file migration siswa ke programmer yang lain agar bisa di migrate, jadi tidak perlu lagi export import file sql seperti yang selama ini kita lakukan.
Seperti yang sudah dijelaskan sebelumnya, migration menjadi control version system untuk bagian database, misalnya programmer A melakukan perubahan pada table siswa, dan jika programmer A ingin mengembalikan lagi ke data sebelumnya, programmer A tinggal me-rollback.
Cara Membuat dan Menggunakan Migration
Sebelumnya kita telah membuat project laravel dengan nama latihan_laravel, cara membuat projectnya bisa dibaca di Cara install Laravel 11 di windows .
Untuk membuat migration caranya kita bisa menggunakan perintah php artisan, dimana php artisan merupakan perintah atau kata kunci untuk menjalankan perintah-perintah laravel melalui command line atau terminal, jangan lupa melakukan konfigurasi database terlebih dulu pada file .env.
Silahkan sesuaikan pengaturan koneksi databasenya pada file .env ini, di sini saya sudah mengatur database dengan nama datasekolah.
Buka file .env, kemudian sesuaikan dengan koneksi databasenya :
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=datasekolah DB_USERNAME=root DB_PASSWORD=
Selanjutnya kita bisa langsung membuka terminal atau CMD, masuk ke direktori project laravel melalui terminal atau cmd, kemudian untuk membuat migration kita bisa mengetikkan perintah berikut :
php artisan make:migration nama_migration
Contohnya kita akan membuat sebuah tabel siswa, maka saya mengetikkan perintah :
php artisan make:migration tbl_siswa
Perhatikan pada gambar di atas, akan muncul pemberitahuan bahwa migration telah dibuat dengan nama 2025_01_28_091534_tbl_siswa , lengkap dengan tahun, bulan, tanggal, nomor unik dan nama migrationnya, yaitu tanggal 28 bulan 01 dan tahun 2025.
Migration akan dibuat pada folder database/migrations, di sana sudah ada migration bawaan default dari laravel, yaitu untuk membuat table user, akan kita bahas pada tutorial laravel tentang membuat login laravel.
Sekarang coba buka file migration tbl_siswa yang sudah kita buat di atas, dalam file migration ini laravel sudah membuatkan 2 buah method atau function secara otomatis, yaitu method up() untuk membuat table dan method down() untuk menghapus table atau rollback. Pada method up() kita bisa menentukan kolom apa saja yang ingin kita buat pada table tbl_siswa.
Salah satu fitur keren dari laravel adalah laravel secara otomatis membuatkan kita kolum created_at yang akan menyimpan tanggal berapa record data tersebut dibuat dan updated_at yang akan menyimpan data tanggal kapan record data tersebut diupdate dan itu dilakukan secara otomatis oleh laravel.
Untuk membuat kolom lainnya pada table dengan migration, ada banyak sekali perintah yang bisa kita gunakan. berikut ini saya rangkum beberapa perintah yang akan sering sekali kita gunakan kedepannya.
Ada banyak sekali perintah yang bisa kita gunakan untuk membuat kolom-kolom pada table dengan menggunakan migration, kita bisa lihat selengkapnya di sini.
Karena di sini saya membutuhkan kolom nis, nama, kelas, alamat dan hp, maka function up() nya saya buat menjadi seperti berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('tbl_siswa', function (Blueprint $table) { $table->increments('id'); $table->integer('nis'); $table->string('nama'); $table->string('kelas'); $table->text('alamat'); $table->integer('hp'); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('tbl_siswa'); } };
Keterangan sintak :
up()
: Digunakan untuk mendefinisikan struktur tabel dan menjalankan perubahan ke database (misalnya membuat tabel atau kolom baru).down()
: Digunakan untuk membatalkan perubahan yang dilakukan oleh metodeup()
(misalnya menghapus tabel).Schema::create('tbl_siswa', ...)
: Membuat tabel baru bernamatbl_siswa
.function (Blueprint $table)
: Callback untuk mendefinisikan kolom-kolom tabel.$table->increments('id');
: Membuat kolom id sebagai primary key dengan tipe data: INTEGER yang auto-increment.$table->integer('nis');
: Membuat kolom nis dengan tipe data INTEGER.$table->string('nama');
: Membuat kolom nama dengan tipe data VARCHAR (panjang default: 255 karakter).$table->string('kelas');
: Membuat kolom kelas dengan tipe data VARCHAR.$table->text('alamat');
: Membuat kolom alamat dengan tipe data TEXT.$table->integer('hp');
: Membuat kolom hp dengan tipe data INTEGER.$table->timestamps();
: Membuat dua kolom otomatis: created_at : Tanggal/waktu saat data dibuat dan updated_at : Tanggal/waktu saat data terakhir diperbarui.
Kemudian kita bisa langsung mengetikkan perintah berikut pada terminal atau cmd, agar file migration kita di jalankan :
php artisan migrate
Hasilnya :
Perhatikan, ada 10 table yang di generate oleh migration yaitu table tbl_siswa sesuai dengan yang kita buat tadi dan 9 table yang lain. Sembilan table tersebut secara default dibuat oleh laravel saat kita menggunakan migration, karena table migrations ini berguna untuk menyimpan semua data atau log migration yang kita lakukan.
Perhatikan juga table tbl_siswa, seperti yang sudah dijelaskan sebelumnya dengan fungsi atau perintah $table->timestamps(); akan otomatis membuatkan kita kolum created_at dan updated_at yang akan menyimpan kapan record data tersebut dibuat atau diupdate.
Merubah Nama table Dengan Migration Laravel
Untuk merename table dengan menggunakan Migration sudah ada fungsi yang disediakan, kita bisa menggunakan perintah :
Schema::rename('nama_table_yang_ingin_di_rename', 'nama_baru');
Bisa juga dengan langsung mengubah nama table pada fungsi up() dan kemudian ketik perintah php artisan migrate.
Menghapus Table Dengan Migration
Untuk menghapus table dengan migration laravel, juga sudah ada fungsi atau methodnya dengan perintah :
Schema::drop('nama_table');
atau
Schema::dropIfExists('nama_table');
Cara Rollback Migration Laravel
Seperti yang sudah dijelaskan di awal tutorial ini migration seperti menjadi control version system, semua perubahan database yang kita lakukan dengan migration semuanya didata, sehingga kita bisa melakukan rollback dengan mudah saat kita ingin mengubah format table ke versi sebelumnya sebelum kita ubah.
Kita bisa melakukan rollback dengan mengetik perintah php artisan berikut pada terminal atau cmd :
php artisan migrate:rollback
Atau jika kita ingin merollback beberapa langkah perubahan sebelumnya, kita bisa menambahkan perintah :
php artisan migrate:rollback --step=5
Tergantung kita inginnya mengembalikan datanya ke perubahan yang keberapa.
Demikian tutorial tentang Migration pada Laravel 11, selanjutnya kita akan mempelajari tentang Seeder dan Faker pada Laravel 11.
Referensi :
- https://www.malasngoding.com/migration-laravel/