Database Migration pada Laravel, Version Control untuk Database

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 tipe 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.

Versi Laravel yang digunakan adalah Laravel 5.1.

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: 2015_05_19_150027_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 di atas adalah database/migrations/2015_05_19_150027_create_cities_table.php.

Berikut kode yang dihasilkan dari membuat migration yang telah dilakukan:

class CreateCitiesTable extends Migration {

    public function up()
    {
        //
    }

    public function down()
    {
        //
    }
}

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 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->increments('id');
        $table->string('name');
        $table->string('map');
        $table->timestamps();
    });
 }

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

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

Menjalankan Migration

Untuk menjalankan semua migration yang belum dijalankan menggunakan perintah berikut:

php artisan migrate

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 operation 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

One thought on “Database Migration pada Laravel, Version Control untuk Database

Leave a Reply

%d bloggers like this: