Cara Menggunakan Migrations (Best Practices)
Halo sobat koder! Masih ngoding kan? 
Pada postingan kali ini, kita akan belajar tentang bagaimana cara menggunakan migrations di laravel dengan benar (best practices). Tapi sebelumnya, apa itu migrations di laravel?
Migrations merupakan sejenis version control tapi untuk database kalian. Sehingga memudahkan suatu tim untuk mengubah dan membagikan skema database. Sehingga tidak perlu lagi membuat tabel langsung di database, mengubah skema database secara manual dan lain sebagainya yang memungkinkan terjadinya database menjadi berantakan.
Setelah paham apa itu migrations, berarti tinggal bagaimana cara menggunakan migrations pada aplikasi laravel kalian. Yuk simak tutorialnya..
Tapi sebelumnya, pastikan kalian sudah memiliki project laravel ya, dan jangan lupa buat database yang akan digunakan.

Konfigurasi Environment

Seperti yang tadi sudah dijelaskan, hal pertama yang kita butuhkan untuk membuat migrations di laravel tentunya adalah database. Dalam hal ini, saya sudah membuat database dengan nama belajar_migrations.
Selanjutnya kita konfigurasi file .env kita sehingga aplikasi laravel dan migrations-nya nanti dapat terhubung dengan database.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=belajar_migrations // Ganti dengan nama database kalian
DB_USERNAME=root // Ganti dengan username database kalian
DB_PASSWORD= // Isi dengan password user database kalian, jika tidak ada bisa dikosngkan saja
Pada dasarnya konfigurasi yang dilakukan hanya itu saja. Setelah konfigurasi selesai, kita akan langsung membuat migrations-nya. 

Membuat Migrations dengan PHP Artisan

Laravel telah memudahkan kita dalam proses pembuatan migrations, karena seperti biasa php artisan yang akan men-generate file migrations kita. Untuk membuatnya kita cukup memanggil perintah berikut pada terminal atau cmd.
php artisan make:migration create_books_table --table=books
Jika perintah tersebut berhasil dijalankan, maka akan muncul file baru pada direktori database/migrations/[file migrations kamu]. Saat membuat migrations dengan php artisan, gunakan tambahan opsi --create=namatabel untuk meminta migrations membuatkan tabel baru dengan nama yang kita tentukan.
Perlu diperhatikan, sebaiknya ketika membuat table biasakan menggunakan kata majemuk seperti users, books, profiles sebagai penanda bahwa ada banyak data yang kita simpan didalamnya.
Setelah membuat filenya, silahkan buka file migraations tersebut dan tambahkan kode berikut untuk membuat colom pada tabel.
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('authors');
$table->string('publishers');
$table->timestamps();
$table->softDeletes();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('flights');
}
}
Sebelum lebih lanjut, kita perhatikan 2 method yang ada pada struktur class migrations diatas. Method up() digunakan untuk pembuatan table, penambahan kolom atau penambahan index pada tabel yang ditentukan. Sedangkan down() adalah kebalikan dari method up()
Schema::create() digunakan untuk proses pembuatan tabel (dalam hal ini kita membuat tabel books). Kemudian $table akan mendefinisikan isi kolom dari tabel kita. Ada banyak sekali jenis kolom yang bisa kalian gunakan, untuk belajar lebih lanjut bisa baca dokumentasinya disini.
Aplikasi yang baik selalu menggunakan soft delete saat melakukan penghapusan data (tidak dihapus permanen dari database), karena bisa saja data tersebut memiliki relasi dengan tabel lain yang belum terhapus. Hal ini bisa menghindari terjadinya error. 

Menjalankan Migrations dengan PHP Artisan

Setelah file migrations kita buat. Maka selanjutnya adalah menjalankan migrations tersebut agar bisa masuk ke database. Untuk itu, kita hanya perlu menjalankan perintah php artisna berikut.
php artisan migrate
Jika berhasil, maka laravel akan melakukan migrasi dan membuatkan tabel baru di database kalian.
Hasil migrations pada database
Terlihat tabel books telah berhasil dibuat. Selain itu ada tabel migrations, yang akan bekerja seolah olah sebagai version control untuk database tersebut. Pada gambar diatas, terlihat ada tabel lain (tabel password_resets dan users) yang ikut di migrasi oleh laravel. Tabel tersebut merupakan default dari laravel, kalian bisa menghapus tabel atau file migrationsnya jika tidak membutuhkannya.
Jika kalian gagal saat melakukan migrasi, dan muncul error specified key was too long, silahkan ikuti tutorial cara memperbaiki laravel migrations specified key was too long.

Mengembalikan Database ke Kondisi Sebelumnya dengan Rollback 

Jika kalian melakukan kesalahan saat proses pembuatan aplikasi khususnya dibagian database. Kalian bisa mengembalikannya ke kondisi sebelumnya dengan perintah rollback.
php artisan migrate:rollback
Perintah tersebut akan mengembalikan kondisi database ke batch sebelumnya. Jadi kalian bisa melanjutkan mengoding sebelum database tersebut mengalami permasalahan. Enak kan... 

Mengembalikan Database ke Kondisi Awal dengan Reset

Jika kalian benar benar ingin mengembalikan database ke kondisi awal sebelum migration dijalankan. Kalian bisa menggunakan perintah reset.
php artisan migrate:reset

Akhir Kata

Gimana, cukup mudah kan cara menggunakan migrations di laravel?  Cara ini tentunya cukup membantu dibandingkan jika kalian masih manual membuat tabel di database, kalu error harus di drop tabelnya dan lain sebagainya yang cukup memakan waktu. Dengan adanya migrations ini, maka proses modifikasi pada database dapat dilakukan dengan mudah dan cepat.
Okeee, jadi segitu dulu aja tutorial kali ini, semoga bermanfaat dan terus ngoding yah!