Tutorial Dasar Penggunaan Laravel : Database Migration / Migrasi Database

Share This Page

Sekarang, kita akan membahas fitur Laravel yang akan sangat berguna kedepannya yaitu Migration / manajemen database. Dengan fitur ini, kita nggak perlu lagi repot-repot membuat tabel di database secara terpisah, karena kita dapat melakukan hal tersebut melalui Laravel juga. Dengan migration, kita dapat membuat tabel dengan lebih mudah, dan mengupdate struktur tabel dengan lebih cepat juga. Pertama-tama kita harus mengatur dulu koneksi database projek kita pada file .env dulu.

File .env (baca : environtment) tersebut merupakan file yang berisi variabel tetap / constant pada projek. Bagian yang perlu kita sesuaikan hanya di bagian DB_DATABASE, DB_USERNAME, dan DB_PASSWORD. Pastikan database sudah dibuat dan namanya sesuai dengan yang akan kita ketik pada file env, setelah itu save.

Jika kita ingin membuat sebuah tabel baru pada projek, maka kita perlu membuat migration baru. Cara membuatnya adalah dengan menjalankan perintah :

php artisan make:migration NamaMigration

Nama migration yang diinputkan sifatnya bebas asal tidak konflik dengan file lain, sebagai contoh saya membuat 2 file migration dengan nama create_inventory dan create_category. 

Setelah perintah tersebut dijalankan, maka Laravel akan membuat file baru di direktori database/migrations/. Sebagai migration default, Laravel sudah menyediakan file migration create_user_table dan create_password_reset_table. File tersebut bisa kita jadikan contoh jika kita ingin membuat tabel baru.

Sekarang, kita akan membuka file migration yang sudah kita buat. Perlu diperhatikan bahwa tipe data yang akan digunakan pada bagian ini sedikit berbeda dengan tipe data database yang sudah kita kenal. Beberapa tipe data standar yang akan sangat sering digunakan misalnya : 

  • increments() untuk membuat integer dengan AUTO_INCREMENT (untuk primary key)
  • string() setara dengan VARCHAR di MySQL
  • integer() setara dengan INT di MySQL
  • text() setara dengan TEXT di MySQL
  • timestamps() untuk membuat tipe data DATE kolom created_at dan updated_at sekaligus

Tipe data lengkap dan selebihnya bisa dilihat pada dokumentasinya di https://laravel.com/docs/5.5/migrations . Berikut ini contoh penerapan migration untuk tb_inventory dan tb_inventory_category :

<?php
//create_inventory
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateInventory extends Migration
{

    public function up()
    {
        Schema::create('tb_inventory', function(Blueprint $kolom){
            $kolom->increments('id'); //sebagai primary key
            $kolom->string('nama_barang');
            $kolom->integer('jumlah');
            $kolom->integer('kategori');
            $kolom->text('deskripsi')->nullable();
            $kolom->timestamps(); // membuat kolom created_at & updated_at
        });
    }

    public function down()
    {
        //nama tabel disamakan
        Schema::dropIfExists('tb_inventory');
    }
}
<?php
//inventory category
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCategory extends Migration
{

    public function up()
    {
        Schema::create('tb_inventory_category', function(Blueprint $kolom){
            $kolom->increments('id'); //primary key
            $kolom->string('nama_kategori');
            $kolom->text('deskripsi')->nullable(); //boleh kosong
            $kolom->timestamps(); //created_at + updated_at
        });
    }

    public function down()
    {
        Schema::dropIfExists('tb_inventory_category');
    }
}

Pada class tersebut, ada 2 method utama yang akan digunakan yaitu up() dan down(). Method up() dijalankan ketika kita membuat migration, dan down() dijalankan ketika kita ingin menghapus migration. Apabila migration sudah selesai dibuat, maka kita dapat menjalankan migration tersebut (yang setara dengan membuat tabel baru). Caranya adalah dengan menjalankan perintah : 

php artisan migrate

Apabila tidak ada kesalahan ketik, dan migration sudah berhasil dijalankan, maka tabel tersebut akan otomatis dibuat 

Bagaimana kalau misalnya saya ada salah ketik, dan saya ingin mengulang migratenya kembali? Tenang saja, hal tersebut masih bisa dilakukan dengan perintah :

php artisan migrate:rollback

Apabila perintah tersebut dijalankan, maka seluruh tabel yang kita buat akan dihapus. (Hati-hati, sekalipun tabelnya sudah berisi data juga akan ikut terhapus lho..)

Setelah seluruh tabel terhapus, migrationnya masih bisa kita utak-atik lagi, dan kalau sudah OK, baru kembali menjalankan perintah "php artisan migrate" untuk mengupdate tabel ke struktur yang terbaru.

Demikian dasar penggunaan Laravel edisi migration tabel.. Jika ada kesulitan silakan dishare pada kolom komentar dibawah. Selanjutnya kita akan membahas penggunaan relasi antar tabel dalam Laravel.

Share This Page

Share Your Comment Here