
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
Konfigurasi Lingkungan dan Database
Buka file .env pada direktori root proyek Laravel, kemudian sesuaikan parameter database sebagai berikut:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=praktikum_laravel
DB_USERNAME=root
DB_PASSWORD=Implementasi Database (Migration & Seeding)
2.1 — Membuat & Menjalankan Migration:
Jalankan perintah berikut pada terminal untuk membuat file migrasi tabel products:
php artisan make:migration create_products_table// 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 migrate2.2 — Membuat & Menjalankan Seeder:
// Buat file seeder dengan perintah:
php artisan make:seeder ProductSeeder// 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(),
]
]);
}
}//Daftarkan ProductSeeder di dalam file database/seeders/DatabaseSeeder.php:
$this->call(ProductSeeder::class);// Jalankan pengisian data dengan perintah:
php artisan db:seed
/* (Catatan: Perintah alternatif untuk mereset dan langsung mengisi data: php artisan migrate:fresh --seed) */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
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'
];
}Pembuatan Controller dan Resource Logika
Buat controller bernama ProductController yang memiliki fungsi dasar (resource) menggunakan perintah:
php artisan make:controller ProductController --resource/* 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'));
}
}Pengaturan Routing
Buka berkas routes/web.php dan daftarkan route resource untuk memetakan URL secara otomatis ke method di ProductController:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;
Route::resource('products', ProductController::class);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:
<!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:
@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>
@endsectionIIIKesimpulan
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.