Membuat Migration untuk Tabel User


Tutorial selanjutnya adalah mendesain dan membuat struktur tabel dalam pangkalan data (database) menggunakan fitur migration yang ada di Lumen dan Laravel. Dengan migration, kita bisa membuat tabel, mengganti nama, memodifikasi nama kolom, dan aksi yang berhubungan dengan pangkalan data lainnya.

Dalam contoh kasus aplikasi yang dibangun, kalian akan membuat API yang menangani operasi data user. Mulai dari create, read, update, sampai dengan delete. Data user juga nanti digunakan untuk autentikasi mengakses API.

Di Lumen, model untuk tabel users sudah tersedia. Tapi migration-nya belum disediakan langsung oleh Lumen seperti halnya Laravel. Oleh karenanya, kita perlu membuatnya sendiri secara manual.

Baca juga: Membuat Tabel dengan Migration.

Buat berkas migration terlebih dahulu menggunakan Artisan console.

$ php artisan make:migration create_users_table

Apabila berkas migration berhasil dibuat, kalian akan menemui berkas baru dalam direktori database/migrations.

2017_08_28_072019_create_users_table.php

Penamaannya kurang lebih seperti di atas, di mana angka-angka prefiks menunjukkan waktu migration dibuat. Isi dari berkas tersebut kurang lebih seperti di bawah. Masih kosong, belum ada tabel dan kolom yang didefinisikan.

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

Modifikasi berkas di atas dengan menambahkan kolom pada tabel users sesuai dengan struktur di bawah. Pembuatan tabel serta kolomnya sendiri menggunakan facade Schema dan Blueprint yang sudah diimpor pada berkas di atas.

+----------------+-------------------------------+------+-----+------------+----------------+
| Field          | Type                          | Null | Key | Default    | Extra          |
+----------------+-------------------------------+------+-----+------------+----------------+
| id             | int(10) unsigned              | NO   | PRI | NULL       | auto_increment |
| name           | varchar(191)                  | NO   |     | NULL       |                |
| email          | varchar(191)                  | NO   | UNI | NULL       |                |
| password       | varchar(191)                  | NO   |     | NULL       |                |
| created_at     | timestamp                     | YES  |     | NULL       |                |
| updated_at     | timestamp                     | YES  |     | NULL       |                |
+----------------+-------------------------------+------+-----+------------+----------------+

Jika ditulis lengkap, skrip migration-nya kurang lebih seperti berikut.

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name')->unique();
            $table->string('email');
            $table->string('password');
            $table->timestamps();
        });
    }

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

Untuk cara yang lebih praktis, kalian juga dapat menyalin isi berkas migration dari framework Laravel. Isinya sendiri dapat kalian buka dari halaman repositori Laravel.

Sampai di sini, berkas migration sudah berhasil dibuat, tapi belum sepenuhnya digunakan karena tabel fisiknya belum tersedia di MySQL. Untuk membuatnya, kalian bisa menjalankan perintah di bawah melalui terminal.

$ php artisan migrate

// untuk debug mode
$ php artisan migrate --verbose

Jika tidak ada kesalahan, kalian akan mendapati dua buah tabel dalam pangkalan data yang digunakan. Pertama, tabel users sebagai bahan tutorial yang akan dibuat. Kedua, tabel migrations sebagai penampung informasi migration apa saja yang sudah dijalankan.

Informasi migration ini sangat berguna ketika kalian ingin melakukan rollback migration atau bisa juga menjalankan ulang migration dari awal.

Tak Berkategori

Yugo Purwanto

Pemrogram PHP dan JavaScript yang sedang sibuk mengembangkan aplikasi Glosarium Bahasa Indonesia.

1 comment

Tinggalkan Balasan