Advertisement / Iklan
Google AdSense Responsive Unit

Ruang iklan proporsional (Zero CLS) bebas risiko klik tidak sengaja.

Laravel Diterbitkan: • Diperbarui: • 6 menit baca • 2 views

Panduan Dasar Laravel: Arsitektur MVC & Eloquent ORM

Juan Mths
Juan Mths
Chief Technology Officer & Administrator • Skor SEO: 100/100
Ilustrasi Panduan Dasar Laravel: Arsitektur MVC & Eloquent ORM
Laravel Featured Article Panduan Dasar Laravel: Arsitektur MVC & Eloquent ORM
Advertisement / Iklan
Google AdSense Responsive Unit

Ruang iklan proporsional (Zero CLS) bebas risiko klik tidak sengaja.

Laravel adalah framework aplikasi web berbasis PHP yang menggunakan pola arsitektur Model-View-Controller (MVC) untuk menyederhanakan tugas-tugas rutin pengembangan seperti otentikasi, perutean (routing), manajemen sesi, dan manipulasi basis data. Diciptakan oleh Taylor Otwell, Laravel dirancang dengan sintaksis ekspresif dan elegan guna membantu pengembang bertransisi dari PHP murni (native) menuju standardisasi rekayasa perangkat lunak modern yang modular, mudah diuji, dan aman.

Saat merancang sistem web komersial atau aplikasi berskala menengah, menulis kode prosedural tanpa standar arsitektur sering memicu basis kode yang rapuh (spaghetti code). Laravel mengatasi masalah ini dengan menyediakan pemisahan tanggung jawab yang tegas antar-lapisan fungsional aplikasi.

Advertisement / Iklan
Google AdSense Responsive Unit

Ruang iklan proporsional (Zero CLS) bebas risiko klik tidak sengaja.

Melalui integrasi mesin templat Blade, pemetaan basis data objek Eloquent ORM, dan mekanisme proteksi bawaan, Laravel menghadirkan efisiensi tinggi bagi pengembang untuk membangun purwarupa cepat maupun sistem produksi yang skalabel.

1. Pola Arsitektur MVC (Model-View-Controller)

Pondasi utama Laravel bertumpu pada pemisahan logika aplikasi ke dalam tiga lapisan kerja mandiri, memastikan bahwa manipulasi data, logika pemrosesan, dan antarmuka pengguna tidak saling bercampur:

Advertisement / Iklan
Google AdSense Responsive Unit

Ruang iklan proporsional (Zero CLS) bebas risiko klik tidak sengaja.

  • Model: Berinteraksi langsung dengan tabel basis data, mendefinisikan relasi antar-entitas, dan menjalankan aturan bisnis (misalnya representasi tabel pengguna atau produk).

  • View: Menangani antarmuka visual dokumen HTML yang dilihat oleh pengunjung, memanfaatkan mesin templat Blade untuk merender data secara aman.

  • Controller: Berperan sebagai jembatan yang menerima permintaan pengguna (HTTP request), meminta data dari Model, lalu mengirimkannya ke View untuk ditampilkan ke peramban.

Ilustrasi Panduan Dasar Laravel: Arsitektur MVC & Eloquent ORM

Tips Praktis dari Pengalaman Saya: Terapkan prinsip Fat Model, Skinny Controller dalam proyek Anda. Jangan menumpuk logika kalkulasi bisnis yang panjang atau kueri SQL rumit di dalam Controller. Serahkan validasi, pemodelan relasi, dan manipulasi data kepada Model, Service Layer, atau Form Request agar Controller Anda tetap bersih dan hanya berfokus pada penerimaan permintaan serta pengembalian respons.

Tabel Komparasi Alur Tanggung Jawab Komponen MVC Laravel

Untuk memahami batas kerja masing-masing komponen saat membangun fitur baru di Laravel, perhatikan tabel perbandingan teknis berikut:

Komponen

Lokasi Direktori Bawaan

Peran & Tanggung Jawab Utama

Contoh Eksekusi Kode

Route

routes/web.php

Menangkap URL dan mengarahkan lalu lintas HTTP ke Controller yang sesuai.

Route::get('/produk', [ProdukController::class, 'index']);

Controller

app/Http/Controllers/

Mengorkestrasi input request, memanggil model, dan memilih tampilan view.

return view('produk.index', compact('produk'));

Model

app/Models/

Mengelola persistensi database via Eloquent, relasi tabel, dan accessor/mutator.

Produk::where('status', 'aktif')->latest()->get();

View

resources/views/

Menyajikan dokumen antarmuka visual berbasis ekstensi berkas .blade.php.

@foreach ($produk as $item) ... @endforeach

2. Contoh Alur Kerja: Routing dan Controller

Laravel menggunakan sistem perutean terpusat di dalam berkas routes/web.php. Ketika sebuah URL dikunjungi oleh pengguna, rute tersebut akan mendelegasikan tugas ke metode spesifik di dalam Controller:

// 1. Definisi Rute pada routes/web.php
use App\Http\Controllers\ArtikelController;

Route::get('/artikel', [ArtikelController::class, 'index']);

// 2. Logika pada app/Http/Controllers/ArtikelController.php
namespace App\Http\Controllers;

use App\Models\Artikel;
use Illuminate\View\View;

class ArtikelController extends Controller
{
    public function index(): View
    {
        // Mengambil semua artikel terbit dari database via Eloquent
        $dataArtikel = Artikel::where('status', 'published')
            ->latest()
            ->paginate(10);

        // Mengirim data ke antarmuka Blade
        return view('artikel.index', compact('dataArtikel'));
    }
}

3. Eloquent ORM: Manipulasi Data Berorientasi Objek

Laravel menyertakan Eloquent, sebuah Object-Relational Mapper (ORM) berbasis pola Active Record yang memetakan baris tabel database menjadi objek PHP murni. Anda tidak perlu lagi menyusun string kueri SQL panjang secara manual dengan risiko galat sintaksis:

// Menyimpan data baru tanpa string kueri 'INSERT INTO' manual
$produk = new Produk;
$produk->nama = 'Keyboard Mekanikal';
$produk->harga = 450000;
$produk->save();

// Mengambil produk aktif dengan harga di bawah 500 ribu via Method Chaining
$promo = Produk::where('harga', '<=', 500000)
    ->where('status', 'aktif')
    ->get();
Komparasi penulisan kueri SQL manual vs sintaks Eloquent ORM Laravel

Kesalahan Umum yang Sering Terjadi (Troubleshooting): Masalah paling sering dihadapi pemula saat mengambil data berelasi di Eloquent adalah jebakan N+1 Query Problem. Jika Anda mengambil 20 artikel menggunakan Artikel::all() lalu memanggil nama relasi penulis ($item->author->name) di dalam perulangan Blade, sistem akan mengeksekusi 1 kueri utama ditambah 20 kueri tambahan ke database! Selalu gunakan metode eager loading Artikel::with('author')->get() untuk mereduksi puluhan eksekusi database menjadi hanya 2 kueri efisien.

4. Blade Template Engine

Untuk lapisan tampilan (View), Laravel menyediakan mesin templat bawaan bernama Blade. Mesin ini mengizinkan penulisan logika kontrol seperti loop dan kondisional tanpa perlu membuka tag <?php ... ?> berulang kali, serta mendukung sistem pewarisan layout (template inheritance):

<!-- resources/views/artikel/index.blade.php -->
<h1>Daftar Artikel Terbaru</h1>

@forelse ($dataArtikel as $item)
    <article>
        <h2>{{ $item->judul }}</h2>
        <p>{{ $item->ringkasan }}</p>
        <small>Penulis: {{ $item->author->name }}</small>
    </article>
@empty
    <p>Belum ada artikel yang dipublikasikan.</p>
@endforelse

{{ $dataArtikel->links() }}

Keamanan Bawaan Framework

Selain kemudahan penulisan kode, Laravel dirancang dengan standar keamanan tingkat tinggi secara bawaan sejak inisialisasi awal:

  1. Perlindungan CSRF (Cross-Site Request Forgery): Seluruh form bertipe POST, PUT, atau DELETE otomatis diverifikasi menggunakan token unik via direktif Blade @csrf untuk memastikan permintaan berasal dari pengguna sah.

  2. Pencegahan SQL Injection: Eloquent ORM dan Fluent Query Builder memanfaatkan PDO parameter binding secara menyeluruh, sehingga input pengguna tidak akan pernah dieksekusi sebagai perintah SQL berbahaya.

  3. XSS Filtering (Cross-Site Scripting): Sintaks kurung kurawal ganda Blade {{ ... }} otomatis melewatkan variabel ke fungsi htmlspecialchars() PHP sebelum dicetak ke layar browser guna menetralkan tag skrip liar.

FAQ: Pertanyaan yang Sering Diajukan Seputar Dasar Laravel

1. Apakah saya harus menguasai PHP murni (native) terlebih dahulu sebelum belajar Laravel?

Sangat dianjurkan. Anda sebaiknya memahami dasar-dasar sintaks PHP, pemahaman fungsi, penanganan form, dan terutama konsep Object-Oriented Programming (OOP) seperti class, inheritance, dan namespace sebelum beralih ke Laravel agar tidak bingung memahami arsitekturnya.

2. Apa fungsi perintah php artisan di Laravel?

Artisan adalah antarmuka baris perintah (CLI) bawaan Laravel yang menyediakan sekumpulan perintah otomatis untuk mempercepat proses pengembangan, seperti membuat file controller, model, migrasi database, hingga menjalankan server lokal pengujian.

3. Mengapa Laravel menggunakan file .env untuk konfigurasi basis data?

Berkas .env digunakan untuk memisahkan konfigurasi sensitif (seperti kredensial database dan API key) dari basis kode utama. Cara ini menjaga keamanan aplikasi saat kode disimpan di repositori Git publik dan mempermudah perbedaan konfigurasi antara lingkungan lokal, staging, dan server produksi.

4. Apa perbedaan antara perulangan @foreach dan @forelse di Blade?

Direktif @foreach hanya melakukan pengulangan pada larik (array) atau koleksi objek. Sedangkan @forelse memiliki blok kondisi alternatif @empty yang otomatis dieksekusi jika koleksi data yang dikirimkan bernilai kosong tanpa perlu menambahkan blok @if(count(...)) manual.

Advertisement / Iklan
Google AdSense Responsive Unit

Ruang iklan proporsional (Zero CLS) bebas risiko klik tidak sengaja.

Diskusi & Komentar

0

Sampaikan pertanyaan teknis, masukan, atau feedback Anda seputar artikel ini.

Tulis Komentar
* Tautan dalam komentar otomatis diamankan dengan atribut rel="nofollow ugc". Maks 2.000 karakter
Moderasi aktif: komentar akan ditinjau sebelum terbit.

Belum Ada Komentar

Jadilah pembaca pertama yang memulai diskusi menarik atau bertanya seputar materi artikel ini!