Tutorial Membuat dan Mengelola Migration di Laravel

Posted on 14 August 2024


Sebelum mulai membuat migration, pastikan Anda sudah menginstal Laravel dan mengonfigurasi database Anda.

  • Install Laravel (Jika Belum Terpasang)
composer create-project --prefer-dist laravel/laravel nama-proyek-anda

Gantilah nama-proyek-anda dengan nama yang diinginkan untuk proyek Anda.

  •  Konfigurasi Database
Edit file .env di direktori root proyek Laravel Anda dan sesuaikan konfigurasi database seperti berikut:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=nama_pengguna
DB_PASSWORD=kata_sandi

Gantilah nilai-nilai ini dengan informasi database Anda.

Membuat Migration 

Migrations seperti kontrol versi untuk database Anda, memungkinkan tim Anda untuk menentukan dan berbagi definisi skema database aplikasi. Jika Anda pernah harus memberi tahu rekan satu tim untuk menambahkan kolom secara manual ke skema basis data lokal mereka setelah menarik perubahan Anda dari kontrol sumber, Anda menghadapi masalah yang dipecahkan oleh migrasi basis data.

Schema Facade Laravel menyediakan dukungan agnostik database untuk membuat dan memanipulasi tabel di semua sistem database yang didukung Laravel. Biasanya, migrasi akan menggunakan fasad ini untuk membuat dan memodifikasi tabel dan kolom database.

  • Generating Migrations

Anda dapat menggunakan make:migrationperintah Artisan untuk menghasilkan migrasi database. Migrasi baru akan ditempatkan di database/migrationsdirektori Anda. 

Contoh perintah:

php artisan make:migration create_users_table
  • Menulis Migration

Setelah file migration dibuat, Anda akan perlu menulis kode untuk mendefinisikan struktur tabel atau perubahan yang ingin Anda lakukan pada database.

Contoh Migration:

<?php

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

return new class extends Migration
{

    public function up(): void
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

        Schema::create('password_reset_tokens', function (Blueprint $table) {
            $table->string('email')->primary();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });

        Schema::create('sessions', function (Blueprint $table) {
            $table->string('id')->primary();
            $table->foreignId('user_id')->nullable()->index();
            $table->string('ip_address', 45)->nullable();
            $table->text('user_agent')->nullable();
            $table->longText('payload');
            $table->integer('last_activity')->index();
        });
    }


    public function down(): void
    {
        Schema::dropIfExists('users');
        Schema::dropIfExists('password_reset_tokens');
        Schema::dropIfExists('sessions');
    }
};

Penjelasan:

  • up Method: Digunakan untuk membuat atau mengubah tabel. Ini adalah tempat Anda mendefinisikan kolom dan tipe data mereka.
  • down Method: Digunakan untuk membatalkan perubahan yang dilakukan oleh up. Biasanya, ini adalah tempat Anda menghapus tabel atau membatalkan perubahan.
  • Menjalankan Migration

Setelah menulis migration, Anda harus menjalankannya untuk menerapkan perubahan ke database.

Perintah untuk Menjalankan Migration:

php artisan migrate

Perintah ini akan menjalankan semua migration yang belum diterapkan dan mengubah struktur database sesuai dengan definisi migration.

  • Melihat Status Migration

Untuk melihat status dari migration yang telah diterapkan, gunakan perintah:

php artisan migrate:status

Ini akan menampilkan daftar migration beserta statusnya (apakah sudah diterapkan atau belum).

Membatalkan Migration

Jika Anda perlu membatalkan migration yang baru diterapkan, Anda bisa menggunakan:

Perintah untuk Membatalkan Migration Terakhir:

php artisan migrate:rollback

Ini akan membatalkan perubahan dari migration terakhir yang diterapkan. Jika Anda ingin membatalkan beberapa batch, Anda bisa menggunakan opsi --step:

php artisan migrate:rollback --step=2

Perintah untuk Mengatur Ulang Semua Migration:

php artisan migrate:reset

Perintah ini akan membatalkan semua migration yang diterapkan dan mengembalikan database ke kondisi awal.