#15-Laravel-Migration

Pengertian Migration Laravel

Migration merupakan Control Version System untuk database. dengan menggunakan migration laravel, memungkinkan kita untuk mengelola database dengan lebih mudah.

Dengan menggunakan migration, kita bisa membuat table data dengan lebih mudah dan cepat. migration akan membuat atau meng-generate file-file migration sebagai control system. file-file ini lah yang bisa dikirim oleh programmer antara satu sama lain saat sedang membuat aplikasi.

Contoh, misalnya dalam pembagian tugas dari Developer

  • Programer A, bertugas menangani prose pembuatan untuk data mahasiswa
  • Programer B, bertugas menangani proses pembuatan data dosen
  • Programer C, bertugas menangani proses KRS dan KHS mahasiswa

Nah, jika si programmer A melakukan perubahan pada table data mahasiswa nya, si programmer A ini tinggal mengirimkan file migration mahasiswa ke programmer yang lain agar bisa di migrate. Jadi tidak perlu lagi export import file sql seperti yang selama ini kita lakukan dan jika programmer A ingin mengembalikan lagi ke data sebelumnya, programmer A tinggal me-rollback.

Cara Membuat & Menggunakan Migration

Untuk membuat migration caranya kita bisa menggunakan perintah php artisan seperti sebelum-sebelumnya. dimana sebelumnya juga sudah dijelaskan tentang pengertian php artisan. dimana php artisan merupakan perintah  atau kata kunci untuk menjalankan perintah-perintah laravel melalui command line atau terminal.

oh ya, jangan lupa melakukan konfigurasi database terlebih dulu pada file .env.

Buka terminal atau CMD, masuk ke direktori project laravel teman-teman melalui terminal atau cmd, kemudian untuk membuat migration kita bisa mengetikkan perintah berikut.

php artisan make:migration ‘nama_migration’

saya contohkan, misalnya kita akan membuat sebuah tabel mahasiswa, maka saya mengetikkan perintah

php artisan make:migration create_mahasiswa_table

maka akan muncul file baru learning_laravel/database/migrations/2019_08_27_080259_create_mahasiswa_table.php

Sekarang coba buka file migration mahasiswa yang sudah kita buat di atas.

Dalam file migration ini, laravel sudah membuatkan 2 buah method atau function secara otomatis. yaitu method up() untuk membuat table. dan method down() untuk menghapus table atau rollback.

Pada method up() kita bisa menentukan kolum apa saja yang ingin kita buat pada table mahasiswa.

 public function up()
    {
        Schema::create('mahasiswa', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });
    }

Secara default sudah ada kolum id dengan auto increment.

$table->increments('id');

dan sudah ada timestamps untuk membuat column created_at dan updated_at secara otomatis.

$table->timestamps();

Sedikit tambahan, fitur keren lagi dari laravel adalah laravel secara otomatis membuatkan kita kolum created_at yang akan menyimpan tanggal berapa record data tersebut dibuat, dan updated_at yang akan menyimpan data tanggal kapan record data tersebut di update. dan itu dilakukan secara otomatis oleh laravel.

Untuk membuat column lainnya pada table dengan migration, ada banyak sekali perintah yang bisa kita gunakan. berikut ini saya rangkum beberapa perintah yang akan sering sekali teman-teman gunakan ke depannya.

$table->increments(‘id’);Untuk membuat kolum table yang menggunakan auto increment dengan type int, seperti yang biasa digunakan untuk membuat kolum id
$table->bigIncrements(‘id’);Membuat kolum dengan type BigInt dan auto increment
$table->bigInteger(‘votes’);Membuat kolum dengan type BigInt
$table->boolean(‘confirmed’);Membuat Kolum dengan type boolean (true dan false)
$table->char(‘name’, 100);Membuat kolum dengan type varchar dengan jumlah 100
$table->date(‘created_at’);Membuat kolum dengan type date
$table->dateTime(‘created_at’);Membuat kolum dengan type datetime
$table->decimal(‘amount’, 8, 2);Membuat kolum dengan type decimal
$table->integer(‘votes’);Membuat kolum dengan type integer / int
$table->string(‘name’, 100);Membuat kolum dengan type varchar dan jumlah 100
$table->longText(‘description’);Membuat kolum dengan type text yang panjang
$table->text(‘description’);Membuat kolum dengan type text
$table->year(‘birth_year’);Membuat kolum dengan type year

Untuk lebih lengkapnya membuat kolum-kolum pada table dengan menggunakan migration bisa dilihat di sini

Karena di sini saya membutuhkan kolum nama, nim dan alamat, maka function up() nya saya buat menjadi seperti berikut.

<?php

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

class CreateMahasiswaTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('mahasiswa', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nama');
            $table->integer('nim');
            $table->text('alamat');
            $table->timestamps();
        });
    }

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

Kolom bisa disesuaikan dengan kebutuhan masing-masing. Untuk memproses ke dalam database, ketik perintah berikut

php artisan migrate

Sekarang coba buka database learning_laravel, akan ada table baru yg bernama mahasiswa

Migrate table mahasiswa

Perhatikan, ada 2 table yang di generate oleh migration. yaitu table mahasiswa sesuai dengan yang kita buat tadi. dan satunya lagi table migrations. table migrations secara default dibuat oleh laravel saat kita menggunakan migration. karena table migrations ini berguna untuk menyimpan semua data atau log migration yang kita lakukan.

Lihat detail schema table mahasiswa

Schema Table Mahasiswa
$table->increments(‘id’)Membuat kolom id(int) Primary Key Auto Increment
$table->string(‘nama’);Membuat kolom nama(varchar)
$table->integer(‘nim’);Membuat kolom nim(int)
$table->text(‘alamat’);Membuat kolom nim(varchar)
$table->timestamps();Membuat kolom created_at(timestamp)&created_at(timestamp)

Perhatikan $table->timestamp() sytax tersebut membuat 2 kolom secara otomatis dengan nama created_at & updated_at yang akan menyimpan kapan record data tersebut dibuat atau diupdate

Merubah Nama table Dengan Migration Laravel

Untuk rename table dengan menggunakan Migration, sudah ada fungsi yang disediakan. teman-teman bisa menggunakan perintah

Schema::rename('nama_table_yang_ingin_di_rename', 'nama_baru');

atau

Schema::dropIfExists('nama_table');

Cara Rollback Migration Laravel

Migration seperti menjadi control version system, semua perubahan database yang kita lakukan dengan migration semuanya di data, sehingga kita bisa melakukan rollback dengan mudah saat kita ingin mengubah format table ke versi sebelumnya sebelum kita ubah.

Kita bisa melakukan rollback dengan mengetik perintah php artisan berikut pada terminal atau cmd.

php artisan migrate:rollback

Atau jika kita ingin merollback beberapa langkah perubahan sebelumnya, kita bisa menambahkan perintah

php artisan migrate:rollback --step=5

Tergantung ingin mengembalikan datanya ke perubahan yang keberapa.

Sumber

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>