UPDATE 7 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8

Kamu bekerja dalam tim pengembangan dan menginginkan skema database tetap terbaru meskipun teman satu tim lain melakukan perubahan? Ya, kamu bisa menggunakan fitur Database Migration pada Laravel untuk meyakinkan bahwa tim pengembang mempunyai skema database terbaru. Fitur ini mirip dengan version control untuk database.

Pada tulisan kali ini, kita akan membuat sebuah migration database dengan nama skema cities (bentuk data mirip dengan tutorial sebelumnya: Memulai Laravel PHP, Membuat Aplikasi Daftar Kota). Migration biasanya dipasangkan dengan fitur schema builder Laravel, sehingga di dalam menulis migration menggunakan schema builder yang digunakan untuk membangun skema database aplikasi.

Menghasilkan Kelas Migration

Untuk menghasilkan kode migrasi, kamu dapat menggunakan perintah Artisan make:migration. Berikut adalah contoh perintah membuat tabel cities:

php artisan make:migration create_cities_table

Setelah perintah tersebut dijalankan, output yang dihasilkan sebagai berikut:

Created Migration: 2019_03_07_040935_create_cities_table

Laravel menyimpan kode migration pada direktori database/migrations dan secara otomatis diberikan timestamp pada nama file yang memungkinkan Laravel untuk menentukan urutan migration. Lokasi migration dari contoh di atas adalah database/migrations/2019_03_07_040935_create_cities_table.

Berikut kode yang dihasilkan dari membuat migration yang telah dilakukan:

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

class CreateCitiesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('cities', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('cities');
    }
}

Struktur Migration

Kelas migration berisikan dua metode yaitu up() dan down(). Metode up() digunakan untuk menambahkan tabel baru, kolom dan indeks ke dalam database. Sedangkan metode down() mengembalikan operasi (rollback) yang telah dijalankan oleh method up().

Kita masukkan kode schema builder untuk membuat tabel cities di metode up():

public function up()
{
    Schema::create('cities', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('map');
        $table->timestamps();
    });
}

Sedangkan metode down() berisikan kode schema builder untuk menghapus tabel cities:

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

Menjalankan Migration

Untuk menjalankan semua migration yang belum dijalankan menggunakan perintah berikut:

php artisan migrate

Sebelum menjalankan migrasi, pastikan koneksi database telah diatur melalui file .env:

...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=password
...

Ketika perintah Artisan di atas dijalankan, skrip yang berada di dalam metode run() yang akan dijalankan. Perlu diperhatikan bahwa jika mendapatkan error “class not found”, coba jalankan perintah:

composer dump-autoload

Mengembalikan Migration

Untuk mengembalikan operasi migration terakhir dapat menggunakan perintah Artisan migrate:rollback.

php artisan migrate:rollback

Perlu dicatat bahwa semua file migration (batch) terakhir yang telah dijalankan akan dikembalikan, metode down() yang dijalankan. Untuk mengembalikan (rolling back) semua migration pada aplikasi, menggunakan perintah Artisan migrate:reset.

php artisan migrate:reset

Kode Github

Join the Conversation

2 Comments

Leave a comment

Leave a Reply