Skip to main content
Praktikum 7·
27 Mei 2026

Manajemen Database Menggunakan Migration-Seeding dan Pengaturan Alur Data dengan Konsep MVC pada Laravel

Penerapan konsep dasar Laravel—yang terdiri dari Migration, Seeding, Routing, Model, Controller, dan View —diarahkan untuk menyelesaikan studi kasus pengelolaan data mahasiswa. Bagian ini mendokumentasikan alur pembuatan skema database secara programatis , manipulasi objek data melalui Eloquent ORM , hingga perancangan antarmuka yang reusable dengan Blade layout , guna menghasilkan sistem aplikasi CRUD yang siap dikelola melalui version control.

IDasar Teori

Model-View-Controller (MVC): Pola arsitektur perangkat lunak yang memisahkan aplikasi menjadi tiga komponen utama: Model (data/logika database), View (antarmuka pengguna), dan Controller (logika bisnis/perantara).

Migration: Fitur di Laravel yang berfungsi sebagai version control untuk database. Migration memungkinkan pengembang membuat, mengubah, atau menghapus struktur tabel melalui kode program PHP tanpa perlu menyentuh DBMS secara manual.

Seeding & Seeder: Fitur untuk mengisi database dengan data awal atau data dummy secara otomatis, yang sangat berguna dalam fase pengujian aplikasi (testing).

Routing: Mekanisme penentuan URL dan pengarah respons (berupa closure maupun diarahkan ke controller) ketika menerima request tertentu dari pengguna.

Eloquent ORM & Model: Representasi tabel database ke dalam objek PHP. Eloquent mempermudah manipulasi data (operasi CRUD) dengan sintaks pemrograman yang ekspresif.

Blade Template Engine: Mesin templating bawaan Laravel yang kuat dan aman. Blade menyediakan fitur layouting (@extends, @yield, @section) untuk membuat komponen antarmuka yang dapat digunakan berulang kali (reusable).

IILangkah Kerja Praktikum

1

Konfigurasi Lingkungan dan Database

Buka file .env pada direktori root proyek Laravel, kemudian sesuaikan parameter database sebagai berikut:

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=praktikum_laravel
DB_USERNAME=root
DB_PASSWORD=
2

Implementasi Database (Migration & Seeding)

2.1 — Membuat & Menjalankan Migration:

Jalankan perintah berikut pada terminal untuk membuat file migrasi tabel products:

bash
php artisan make:migration create_products_table
php
// Buka file migrasi yang terbentuk di folder database/migrations/ dan lengkapi method up() serta down()

<?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('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->integer('price');
            $table->text('description');
            $table->timestamps();
        });
    }

    public function down(): void {
        Schema::dropIfExists('products');
    }
};
// Eksekusi migrasi ke database menggunakan perintah:

php artisan migrate

2.2 — Membuat & Menjalankan Seeder:

// Buat file seeder dengan perintah:  

php artisan make:seeder ProductSeeder
php
// Edit file database/seeders/ProductSeeder.php untuk memasukkan data awal:  
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class ProductSeeder extends Seeder {
    public function run(): void {
        DB::table('products')->insert([
            [
                'name' => 'Laptop',
                'price' => 7000000,
                'description' => 'Laptop untuk pemrograman',
                'created_at' => now(),
                'updated_at' => now(),
            ],
            [
                'name' => 'Mouse',
                'price' => 150000,
                'description' => 'Mouse wireless',
                'created_at' => now(),
                'updated_at' => now(),
            ]
        ]);
    }
}
dart
//Daftarkan ProductSeeder di dalam file database/seeders/DatabaseSeeder.php:  

$this->call(ProductSeeder::class);
php
// Jalankan pengisian data dengan perintah:  

php artisan db:seed

/* (Catatan: Perintah alternatif untuk mereset dan langsung mengisi data: php artisan migrate:fresh --seed) */
3

Pembuatan Model (Eloquent ORM)

Pastikan model Product telah siap di folder app/Models/Product.php. Tambahkan properti $fillable untuk menentukan kolom mana saja yang dapat diisi secara massal (mass assignment):

php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model {
    use HasFactory;

    protected $fillable = [
        'name',
        'price',
        'description'
    ];
}
4

Pembuatan Controller dan Resource Logika

Buat controller bernama ProductController yang memiliki fungsi dasar (resource) menggunakan perintah:

bash
php artisan make:controller ProductController --resource
php
/* Buka file app/Http/Controllers/ProductController.php dan sesuaikan method index() untuk mengambil data dari model Product dan melemparkannya ke view:  */

<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller {
    public function index() {
        $products = Product::all();
        return view('products', compact('products'));
    }
}
5

Pengaturan Routing

Buka berkas routes/web.php dan daftarkan route resource untuk memetakan URL secara otomatis ke method di ProductController:

php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;

Route::resource('products', ProductController::class);
6

Pembuatan View dengan Blade Layouting

6.1 — Membuat Master Layout:

Buat file baru di resources/views/layouts/app.blade.php. Ini akan menjadi kerangka induk halaman web:

html
<!DOCTYPE html>
<html>
<head>
    <title>@yield('title')</title>
</head>
<body>
    <h1>Aplikasi Laravel</h1>
    <div>
        @yield('content')
    </div>
</body>
</html>

6.2 — Membuat View Anak (Child View):

Buat file di resources/views/products.blade.php untuk menampilkan daftar produk dengan memanfaatkan perulangan @foreach bawaan Blade:

html
@extends('layouts.app')

@section('title', 'Products')

@section('content')
    <h3>Daftar Produk</h3>
    <ul>
        @foreach ($products as $product)
            <li>{{ $product->name }} - Rp {{ number_format($product->price) }}</li>
        @endforeach
    </ul>
@endsection

IIIKesimpulan

Dari pelaksanaan Praktikum 7 ini, dapat ditarik beberapa kesimpulan penting:
1. Framework Laravel mengimplementasikan pola MVC secara konsisten, memisahkan logika data (Model), tampilan antarmuka (View), dan pemrosesan utama (Controller), yang membuat kode program menjadi lebih terstruktur dan mudah dirawat.
2. Pengelolaan database menjadi jauh lebih aman dan fleksibel melalui fungsi Migration (sebagai version control skema database) serta Seeding (otomatisasi penyediaan data awal untuk kebutuhan pengujian).
3. Fitur Eloquent ORM memangkas kebutuhan penulisan query SQL manual yang rumit menjadi pemanggilan method PHP sederhana berbasis objek, sehingga mempercepat pengembangan operasi CRUD.
4. Blade Template Engine menyederhanakan proses pemisahan struktur HTML melalui teknik layouting (@extends dan @yield), sehingga duplikasi kode antarmuka (seperti header/footer) dapat dihindari secara total.