Manajemen Database Menggunakan Migration-Seeding dan Pengaturan Alur Data dengan Konsep MVC pada Laravel
REPOSITORY_GITHUBPenerapan 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.
IIDasar Teori
IVLangkah 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>
@endsection