Blog Content

Home – Blog Content

Tutorial Migration Laravel 11: Panduan Lengkap belajar Database Migration Laravel

Database migration Laravel adalah salah satu fitur unggulan dari framework Laravel yang memungkinkan pengelolaan struktur database secara versi dan terintegrasi dengan kode aplikasi. Dalam artikel ini, kita akan membahas tutorial migration Laravel 11, mulai dari memahami apa itu migration, cara membuat dan menjalankannya, hingga beberapa praktik terbaik untuk menggunakan migration dalam proyek Anda.


Apa Itu Migration di Laravel?

Migration Laravel adalah cara untuk mengelola perubahan pada struktur database menggunakan kode PHP. Dengan migration, Anda bisa:

  • Membuat tabel baru.
  • Mengubah struktur tabel yang sudah ada.
  • Menghapus tabel.
  • Membuat hubungan antar tabel dengan foreign key.

Konsep ini mirip dengan version control untuk database, sehingga setiap perubahan dapat dilacak dan dibatalkan jika diperlukan.


Kenapa Perlu Belajar Migration Laravel 11?

Belajar migration Laravel memberikan banyak manfaat:

  1. Kemudahan Pengelolaan: Semua perubahan database dicatat dalam file migration, sehingga memudahkan kolaborasi dalam tim.
  2. Mengurangi Kesalahan: Karena perubahan dilakukan dengan kode, risiko kesalahan manual pada database berkurang.
  3. Versioning Database: Anda dapat melacak dan kembali ke versi database sebelumnya jika terjadi kesalahan.
  4. Otomatisasi: Dengan satu perintah, Anda bisa membuat atau menghapus struktur database sesuai definisi dalam file migration.

 

Sebelum memulai perlu diketahui bahwa artikel ini adalah artikel lanjutan dari seri belajar laravel, anda dapat membaca artikel sebelumnya di:

  1. Belajar Eloquent Laravel: Panduan Lengkap ORM Laravel
  2. Belajar Blade Laravel 11
  3. Memahami Konfigurasi Laravel dan Cara Mengamankan File .env Laravel 11

 


Tutorial Migration Laravel 11

1. Membuat File Migration

Gunakan perintah Artisan untuk membuat file migration:

php artisan make:migration create_users_table  

Perintah ini akan membuat file migration di direktori database/migrations. Nama file akan mencakup timestamp untuk memastikan urutan eksekusi.

Contoh nama file:
2024_01_01_000000_create_users_table.php


2. Struktur Dasar File Migration

File migration yang dihasilkan akan memiliki dua metode utama:

  • up(): Berisi instruksi untuk membuat atau mengubah struktur database.
  • down(): Berisi instruksi untuk membatalkan perubahan (rollback).

Contoh file migration:

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

class CreateUsersTable extends Migration  
{  
    public function up()  
    {  
        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();  
        });  
    }  

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

3. Menjalankan Migration

Gunakan perintah berikut untuk menjalankan migration:

php artisan migrate  

Perintah ini akan membaca semua file migration yang belum dijalankan dan mengeksekusi metode up() untuk setiap file.


4. Rollback Migration

Jika ada kesalahan, Anda bisa membatalkan perubahan dengan perintah berikut:

php artisan migrate:rollback  

Perintah ini akan menjalankan metode down() pada migration terbaru.


Fitur-fitur Migration Laravel

Migration Laravel memberikan berbagai fitur untuk mengelola struktur database dengan mudah. Berikut adalah beberapa fitur penting:

  • Membuat Tabel Baru
    Dengan migration, Anda dapat membuat tabel baru menggunakan metode seperti create atau schema.

 

 

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamps();
});
  • Mengubah Tabel
    Anda dapat menambahkan, menghapus, atau memodifikasi kolom dalam tabel yang sudah ada.Contoh menambahkan kolom:

 

Schema::table('users', function (Blueprint $table) {
    $table->string('phone')->nullable();
});
  • Menghapus Tabel
    Migration juga memungkinkan Anda untuk menghapus tabel menggunakan metode dropIfExists.
Schema::dropIfExists('users');
  • Mengganti Tipe Kolom
    Laravel mendukung perubahan tipe data kolom menggunakan package doctrine/dbal.Sebelum menggunakan fitur ini, instal dependensi berikut
composer require doctrine/dbal

Contoh mengganti tipe kolom:

Schema::table('users', function (Blueprint $table) {
    $table->string('phone', 20)->change(); // Mengubah panjang kolom phone menjadi 20 karakter
});
  • Mengelola Indeks dan Kunci Asing
    Anda dapat menambahkan indeks, kunci unik, dan kunci asing dalam migration.Contoh:
Schema::table('posts', function (Blueprint $table) {
    $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
});

Tipe Data yang Didukung Laravel

Laravel mendukung berbagai tipe data kolom, yang dapat digunakan untuk mendefinisikan struktur tabel. Berikut adalah tipe data utama yang didukung:

Tipe Data String dan Teks

  • $table->string('column_name', length = 255);
  • $table->char('column_name', length = 255);
  • $table->text('column_name');
  • $table->mediumText('column_name');
  • $table->longText('column_name');

Tipe Data Numerik

  • $table->integer('column_name');
  • $table->bigInteger('column_name');
  • $table->smallInteger('column_name');
  • $table->tinyInteger('column_name');
  • $table->unsignedInteger('column_name');
  • $table->decimal('column_name', total = 8, places = 2);
  • $table->float('column_name', total = 8, places = 2);

Tipe Data Waktu dan Tanggal

  • $table->date('column_name');
  • $table->dateTime('column_name', precision = 0);
  • $table->time('column_name', precision = 0);
  • $table->timestamp('column_name');
  • $table->year('column_name');

Tipe Data Boolean

  • $table->boolean('column_name');

Tipe Data JSON

  • $table->json('column_name');
  • $table->jsonb('column_name');

Tipe Data UUID

  • $table->uuid('column_name');

Tipe Data Enumerasi

  • $table->enum('column_name', ['option1', 'option2']);

Tipe Data Lainnya

  • $table->binary('column_name');
  • $table->ipAddress('column_name');
  • $table->macAddress('column_name');

Contoh Menggunakan Fitur Mengganti Tipe Kolom

Jika Anda memiliki tabel users dengan kolom phone yang sebelumnya bertipe integer, dan ingin mengubahnya menjadi string, gunakan migration seperti ini:

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

class ChangePhoneColumnType extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('phone', 20)->change();
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->integer('phone')->change();
        });
    }
}

Setelah membuat migration, jalankan perintah berikut untuk memperbarui tabel:

php artisan migrate



Dengan memahami fitur-fitur ini, Anda dapat memanfaatkan migration Laravel untuk mengelola database secara lebih fleksibel dan efisien. Jangan lupa untuk menambahkan package doctrine/dbal jika Anda ingin memanfaatkan fitur mengganti tipe kolom!


Tips dan Praktik Terbaik untuk Migration Laravel

  1. Gunakan Nama yang Deskriptif

    Pastikan nama migration mencerminkan apa yang dilakukan. Contoh: create_orders_table, add_status_to_orders_table.
  2. Jangan Edit Migration yang Sudah Dijalankan

    Jika ada perubahan pada tabel, buat migration baru daripada mengedit migration lama untuk menjaga integritas data.
  3. Gunakan Seeder untuk Data Dummy

    Migration hanya untuk struktur database. Gunakan seeder untuk menambahkan data dummy.
  4. Selalu Uji Migration

    Sebelum menjalankan migration di server produksi, uji di lingkungan pengembangan untuk memastikan tidak ada kesalahan.

Apa Itu Seeder Laravel?

Seeder Laravel adalah fitur yang digunakan untuk mengisi tabel database dengan data awal atau data dummy secara otomatis. Dengan seeder, Anda tidak perlu memasukkan data secara manual melalui aplikasi atau SQL query, sehingga sangat membantu saat mengembangkan aplikasi atau menguji fitur tertentu.

Seeder bekerja dengan cara mengeksekusi logika kode yang ditulis dalam file seeder, seperti menambahkan data ke tabel database dengan model Laravel atau query builder.


Manfaat Seeder Laravel

  1. Menghemat Waktu: Mengisi data secara otomatis tanpa perlu input manual.
  2. Data Konsisten: Menggunakan data yang sama di berbagai lingkungan (pengembangan, pengujian).
  3. Mempermudah Pengujian: Data dummy yang dihasilkan membantu dalam menguji berbagai fitur aplikasi.

Cara Membuat Seeder di Laravel

Untuk membuat seeder, gunakan perintah Artisan:

php artisan make:seeder UserSeeder  

Perintah ini akan membuat file UserSeeder.php di direktori database/seeders.


Contoh Seeder Sederhana

Berikut adalah contoh sederhana dari file UserSeeder.php untuk menambahkan data pengguna:

use Illuminate\Database\Seeder;  
use App\Models\User;  

class UserSeeder extends Seeder  
{  
    public function run()  
    {  
        User::create([  
            'name' => 'Admin',  
            'email' => 'admin@example.com',  
            'password' => bcrypt('password'),  
        ]);  
    }  
} 

Menggunakan Faker di Seeder Laravel

Faker adalah library bawaan Laravel untuk menghasilkan data dummy seperti nama, email, nomor telepon, dan lainnya. Berikut adalah contoh penggunaan Faker untuk mengisi tabel users dengan data acak:

use Illuminate\Database\Seeder;  
use App\Models\User;  
use Illuminate\Support\Facades\Hash;  

class UserSeeder extends Seeder  
{  
    public function run()  
    {  
        for ($i = 0; $i < 10; $i++) {  
            User::create([  
                'name' => fake()->name(),  
                'email' => fake()->unique()->safeEmail(),  
                'password' => Hash::make('password123'),  
            ]);  
        }  
    }  
} 

Kode di atas akan menghasilkan 10 data pengguna dengan nama dan email yang diacak menggunakan Faker.


Menjalankan Seeder di Laravel

Untuk menjalankan seeder, gunakan perintah berikut:

php artisan db:seed --class=UserSeeder  

Perintah ini akan mengeksekusi metode run() pada file UserSeeder.

Jika Anda ingin menjalankan semua seeder sekaligus, pastikan untuk mendaftarkan seeder dalam file DatabaseSeeder.php:

public function run()  
{
$this->call([
UserSeeder::class,
ProductSeeder::class, // Tambahkan seeder lainnya di sini
]);
}



Kemudian jalankan perintah:

php artisan db:seed   

Contoh Seeder dengan Data Relasi

Seeder juga dapat digunakan untuk membuat data yang memiliki relasi antar tabel. Contoh, membuat data pengguna dengan beberapa postingan:

use Illuminate\Database\Seeder;  
use App\Models\User;  
use App\Models\Post;  

class UserAndPostSeeder extends Seeder  
{  
    public function run()  
    {  
        User::factory(10)->create()->each(function ($user) {  
            Post::factory(3)->create([  
                'user_id' => $user->id,  
            ]);  
        });  
    }  
}  

Kesimpulan

Belajar migration Laravel membantu pengembang mengelola struktur database secara efisien dan terorganisir. Dengan menggunakan migration, Anda dapat membuat perubahan database yang aman, dapat dilacak, dan mudah dikelola. Kombinasi antara migration dan seeder memberikan fleksibilitas penuh dalam pengelolaan database.

Mulailah menggunakan database migration Laravel hari ini dan tingkatkan efisiensi pengelolaan database Anda!

Arrazy Inovasi hadir sebagai solusi terbaik untuk kebutuhan digital Anda. Kami menyediakan layanan pembuatan website profesional, pengembangan sistem aplikasi canggih, dan optimasi SEO yang efektif untuk mendukung kesuksesan bisnis Anda. Percayakan kebutuhan teknologi Anda kepada kami dan wujudkan visi bisnis Anda dengan inovasi terbaik!

vandyahmad24

Writer & Blogger

Leave a Reply

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

Most Recent Posts

  • All Post
  • Belajar
  • Bisnis
  • Jasa Pembuatan Sistem Aplikasi
  • Jasa Pembuatan Website
  • Laravel
  • Pemprograman

IT Konsultan Profesional yang siap membantu bisnis Anda. Dari pembuatan website yang menarik, optimasi SEO, hingga pengembangan aplikasi mobile

Layanan

Web Development

Optimasi SEO

Mobile Development

System Development

Menu

© 2024 Created With Arrazy Inovasi