Mengembangkan aplikasi berbasis web menggunakan Laravel Framework membutuhkan pemahaman yang runtut mengenai arsitektur Model-View-Controller (MVC). Proses pembangunan aplikasi dimulai saat request pertama kali masuk ke server hingga akhirnya sistem mampu mengelola basis data secara dinamis melalui modul CRUD (Create, Read, Update, Delete).
Artikel ini membahas secara mendalam breakdown alur kerja Laravel dari eksekusi awal hingga penyelesaian modul pengelolaan data siswa (students). Setiap langkah dirancang sederhana, sistematis, dan langsung dapat dipraktikkan.
1. Siklus Eksekusi Pertama (First Run & Default Page)
Saat perintah php artisan serve dijalankan dan URL diakses melalui peramban, Laravel menjalankan mekanisme bootstrap internal untuk memproses permintaan pengguna hingga menampilkan halaman default.
Alur eksekusi internal saat aplikasi pertama kali berjalan:
- Titik Masuk (Entry Point): Peramban mengirimkan permintaan HTTP ke
public/index.php. - Autoload & Bootstrap: File
vendor/autoload.phpmemuat seluruh pustaka modul, kemudian dilanjutkan dengan menginisialisasi kernel aplikasi Laravel dibootstrap/app.php. - Routing HTTP: Permintaan diteruskan ke file routes/web.php untuk dicocokkan dengan rute titik akar (root route):
Route::get('/', function () { return view('welcome'); }); - Penyajian Tampilan (View): Laravel memanggil pustaka templat Blade di
resources/views/welcome.blade.phpdan mengembalikan respons HTML utuh ke layar peramban.
2. Konfigurasi Basis Data dan Migrasi Tabel
Integrasi dengan basis data dilakukan melalui konfigurasi berkas lingkungan dan pembuatan skema tabel menggunakan fasilitas Migration.
A. Pengaturan Kredensial Environment
Buka berkas .env pada direktori utama proyek, lalu sesuaikan parameter koneksi basis data MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_student_db
DB_USERNAME=root
DB_PASSWORD=
B. Pembuatan Model dan File Migrasi
Gunakan perintah Artisan CLI untuk membuat berkas Model dan Migration sekaligus:
php artisan make:model Student -m
Buka berkas migrasi yang terbentuk di direktori database/migrations/xxxx_xx_xx_xxxxxx_create_students_table.php, lalu definisikan atribut kolom sesuai kebutuhan data siswa:
public function up(): void
{
Schema::create('students', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('major');
$table->timestamps();
});
}
Jalankan migrasi untuk mendefinisikan struktur tabel ke dalam basis data:
php artisan migrate
3. Konfigurasi Eloquent Model
Eloquent ORM memerlukan deklarasi properti penampung massal untuk mencegah kerentanan keamanan Mass Assignment Exception saat proses insert atau update data.
Buka berkas app/Models/Student.php dan sertakan array $fillable:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
use HasFactory;
protected $fillable = ['name', 'email', 'major'];
}
4. Pembuatan Controller dan Pendaftaran Rute Resource
Modul CRUD dipusatkan pada pengontrol berbasis sumber daya (Resource Controller) yang terhubung otomatis ke tabel routing aplikasi.
A. Membuat Resource Controller
php artisan make:controller StudentController --resource
B. Mengonfigurasi Router Web
Tambahkan rute tunggal di routes/web.php untuk mengaktifkan seluruh titik akhir RESTful:
use App\Http\Controllers\StudentController;
Route::resource('students', StudentController::class);
Pengaturan ini secara otomatis menyediakan titik akses rute berikut:
| Metode HTTP | URI Rute | Nama Aksi (Method) | Fungsi Utama |
|---|---|---|---|
GET |
/students |
index |
Menampilkan daftar semua data siswa |
GET |
/students/create |
create |
Menampilkan formulir tambah data baru |
POST |
/students |
store |
Validasi dan simpan data baru ke basis data |
GET |
/students/{student}/edit |
edit |
Menampilkan formulir penyuntingan data |
PUT/PATCH |
/students/{student} |
update |
Validasi dan simpan pembaruan data |
DELETE |
/students/{student} |
destroy |
Hapus baris data dari basis data |
5. Implementasi Logika Bisnis pada Controller
Buka app/Http/Controllers/StudentController.php dan tuliskan instruksi pengolahan data untuk tiap fungsi:
namespace App\Http\Controllers;
use App\Models\Student;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function index()
{
$students = Student::latest()->get();
return view('students.index', compact('students'));
}
public function create()
{
return view('students.create');
}
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:students,email',
'major' => 'required|string|max:255',
]);
Student::create($validated);
return redirect()->route('students.index')->with('success', 'Data siswa berhasil ditambahkan.');
}
public function edit(Student $student)
{
return view('students.edit', compact('student'));
}
public function update(Request $request, Student $student)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:students,email,' . $student->id,
'major' => 'required|string|max:255',
]);
$student->update($validated);
return redirect()->route('students.index')->with('success', 'Data siswa berhasil diperbarui.');
}
public function destroy(Student $student)
{
$student->delete();
return redirect()->route('students.index')->with('success', 'Data siswa berhasil dihapus.');
}
}
6. Konstruksi Antarmuka Tampilan (Blade Views)
Buat folder baru bernama students di dalam rute resources/views/, kemudian susun tiga berkas utama berikut:
A. Tampilan Utama (resources/views/students/index.blade.php)
<a href="{{ route('students.create') }}">Tambah Siswa Baru</a>
@if(session('success'))
<p style="color: green;">{{ session('success') }}</p>
@endif
<table border="1" cellpadding="8" cellspacing="0">
<thead>
<tr>
<th>Nama</th>
<th>Email</th>
<th>Jurusan</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach($students as $student)
<tr>
<td>{{ $student->name }}</td>
<td>{{ $student->email }}</td>
<td>{{ $student->major }}</td>
<td>
<a href="{{ route('students.edit', $student->id) }}">Edit</a> |
<form action="{{ route('students.destroy', $student->id) }}" method="POST" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit" onclick="return confirm('Yakin ingin menghapus?')">Hapus</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
B. Formulir Tambah Data (resources/views/students/create.blade.php)
<form action="{{ route('students.store') }}" method="POST">
@csrf
<div>
<label>Nama:</label><br>
<input type="text" name="name" value="{{ old('name') }}" required>
</div>
<div>
<label>Email:</label><br>
<input type="email" name="email" value="{{ old('email') }}" required>
</div>
<div>
<label>Jurusan:</label><br>
<input type="text" name="major" value="{{ old('major') }}" required>
</div>
<br>
<button type="submit">Simpan Data</button>
</form>
C. Formulir Edit Data (resources/views/students/edit.blade.php)
<form action="{{ route('students.update', $student->id) }}" method="POST">
@csrf
@method('PUT')
<div>
<label>Nama:</label><br>
<input type="text" name="name" value="{{ $student->name }}" required>
</div>
<div>
<label>Email:</label><br>
<input type="email" name="email" value="{{ $student->email }}" required>
</div>
<div>
<label>Jurusan:</label><br>
<input type="text" name="major" value="{{ $student->major }}" required>
</div>
<br>
<button type="submit">Perbarui Data</button>
</form>
Mind Mapping Tahapan Pengembangan Modul Laravel
Berikut adalah peta pikiran (mind mapping) kategoris yang menggambarkan visualisasi alur pengembangan dari tahap persiapan hingga produksi antarmuka:
| Kategori Alur Kerja | Tahapan & Komponen Kunci |
|---|---|
| 1. Inisialisasi & Siklus Hidup Aplikasi |
|
| 2. Manajemen Basis Data |
|
| 3. Arsitektur Model & Logika Bisnis |
|
| 4. Routing RESTful & Views Interface |
|
Rujukan artikel teknis dan pengenalan alur kerja ini dikompilasi untuk keperluan dokumentasi pengembangan web pada platform Blog Armin.

Diskusi & Komentar