MVC (Model–View–Controller) adalah pola arsitektur (design pattern) yang memisahkan aplikasi menjadi tiga bagian utama agar kode lebih rapi, terstruktur, dan mudah dikembangkan.
Di Laravel, konsep MVC adalah pondasi utama dalam membangun aplikasi web.
Tujuan Penggunaan MVC
MVC digunakan untuk:
- ✅ Memisahkan logika program dan tampilan
- ✅ Kode lebih mudah dipahami & dirawat
- ✅ Memudahkan kerja tim (backend & frontend)
- ✅ Mempercepat pengembangan aplikasi
- ✅ Mengurangi error dan duplikasi kode
Struktur MVC di Laravel
Secara umum, Laravel membagi MVC seperti ini:
app/
└── Models/ → Model
app/
└── Http/
└── Controllers/ → Controller
resources/
└── views/ → View
Model (M) – Pengelolaan Data
Pengertian Model
Model bertugas untuk:
- Mengelola data
- Berkomunikasi dengan database
- Menyimpan logika bisnis (business logic)
Di Laravel, Model biasanya menggunakan Eloquent ORM.
Lokasi Model
app/Models
Contoh Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Mahasiswa extends Model
{
protected $table = 'mahasiswa';
protected $fillable = ['nama', 'nim', 'jurusan'];
}
Tugas Model:
- Insert data
- Update data
- Delete data
- Ambil data dari database
View (V) – Tampilan User
Pengertian View
View bertugas menampilkan data ke pengguna (user interface).
Laravel menggunakan Blade Template Engine.
Lokasi View
resources/views
Contoh View (mahasiswa.blade.php)
<!DOCTYPE html>
<html>
<head>
<title>Data Mahasiswa</title>
</head>
<body>
<h1>Daftar Mahasiswa</h1>
<ul>
@foreach($mahasiswa as $mhs)
<li>{{ $mhs->nama }} - {{ $mhs->nim }}</li>
@endforeach
</ul>
</body>
</html>
View tidak boleh mengolah data berat, hanya menampilkan.
Controller (C) – Penghubung Model & View
Pengertian Controller
Controller adalah:
- Pengatur alur aplikasi
- Penghubung antara Model dan View
- Tempat logika aplikasi (request → proses → response)
Lokasi Controller
app/Http/Controllers
Contoh Controller
<?php
namespace App\Http\Controllers;
use App\Models\Mahasiswa;
class MahasiswaController extends Controller
{
public function index()
{
$mahasiswa = Mahasiswa::all();
return view('mahasiswa', compact('mahasiswa'));
}
}
Controller:
- Mengambil data dari Model
- Mengirim data ke View
Alur Kerja MVC di Laravel
Flow MVC
- User mengakses URL
- Route memanggil Controller
- Controller memanggil Model
- Model mengambil data dari database
- Controller mengirim data ke View
- View menampilkan data ke user
Diagram Sederhana
User
↓
Route
↓
Controller
↓
Model → Database
↓
Controller
↓
View
↓
User
Contoh Lengkap Alur MVC
Route (web.php)
Route::get('/mahasiswa', [MahasiswaController::class, 'index']);
Controller
public function index()
{
$mahasiswa = Mahasiswa::all();
return view('mahasiswa', compact('mahasiswa'));
}
Model
$mahasiswa = Mahasiswa::all();
View
@foreach($mahasiswa as $mhs)
{{ $mhs->nama }}
@endforeach
Keuntungan MVC di Laravel
| Aspek | Penjelasan |
|---|---|
| Struktur | Kode lebih rapi |
| Maintenance | Mudah diperbaiki |
| Scalability | Mudah dikembangkan |
| Reusability | Kode bisa dipakai ulang |
| Kolaborasi | Tim lebih efisien |
Kesimpulan
MVC di Laravel memisahkan data (Model), tampilan (View), dan proses (Controller) agar aplikasi lebih rapi, terstruktur, dan mudah dikembangkan.