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 buat dulu project laravel dengan nama latihan_laravel, cara membuat projectnya bisa dibaca di https://agussuratna.net/2020/11/27/cara-install-laravel-8-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 buat dahulu database dan sesuaikan pengaturan koneksi databasenya pada file .env ini, di sini saya sudah memiliki 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 create_siswa_table
Perhatikan pada gambar di atas, akan muncul pemberitahuan bahwa migration telah dibuat dengan nama 2021_04_15_013008_create_siswa_table , lengkap dengan tanggal migration dibuat pada awal nama filenya, yaitu tanggal 15 bulan 4 dan tahun 2021.
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 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 siswa.
public function up() { Schema::create('siswa', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Secara default sudah ada kolom id dan sudah ada timestamps untuk membuat column created_at dan updated_at secara otomatis.
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\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateSiswaTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('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. * * @return void */ public function down() { Schema::dropIfExists('siswa'); } }
Kemudian kita bisa langsung mengetikkan perintah berikut pada terminal atau cmd, agar file migration kita di jalankan, sebaiknya file migration yang lain (selain file migration yang kita buat) di hapus saja dulu, di sini saya menghapus file migration user dan reset password, jadi cuma tinggal file migration siswa saja.
php artisan migrate
Hasilnya :
Sekarang kita lihat databasenya, pasti sudah jadi table siswanya.
Perhatikan, ada 2 table yang di generate oleh migration yaitu table siswa sesuai dengan yang kita buat tadi dan satunya lagi table migrations. Table migrations 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 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.
Referensi :
- https://www.malasngoding.com/migration-laravel/
terimakasih atas informasinya pak