Memahami Model, Controller, dan View dalam Laravel 12 #7

image_pdfimage_print

Berikut adalah artikel lengkap tentang Model, Controller, dan View dalam Laravel:


Memahami Model, Controller, dan View dalam Laravel

Laravel adalah salah satu framework PHP yang paling populer untuk pengembangan aplikasi web. Salah satu konsep utama dalam Laravel adalah arsitektur MVC (Model-View-Controller), yang bertujuan untuk memisahkan logika aplikasi, tampilan, dan pengelolaan data. Dalam artikel ini, kita akan membahas secara mendalam tentang Model, Controller, dan View dalam Laravel, termasuk fungsinya, cara penggunaannya, serta contoh implementasinya.


1. Model dalam Laravel

Model dalam Laravel adalah representasi dari tabel dalam database. Model bertanggung jawab untuk berinteraksi dengan database, termasuk mengambil data, menyimpan data, memperbarui, dan menghapus data.

1.1. Cara Membuat Model

Di Laravel, model dapat dibuat menggunakan perintah Artisan:

php artisan make:model Resident

Perintah ini akan membuat file model di dalam direktori app/Models.

1.2. Struktur Model Laravel

Berikut adalah contoh model untuk tabel residents:

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Resident extends Model
{
    use HasFactory;

    protected $table = 'residents'; // Nama tabel dalam database
    protected $primaryKey = 'id'; // Primary Key
    public $timestamps = true; // Aktifkan timestamps

    protected $fillable = [
        'nik', 'name', 'gender', 'birth_date', 'birth_place',
        'address', 'religion', 'marital_status', 'occupation', 
        'phone', 'status'
    ];
}

1.3. Fungsi Penting dalam Model

Laravel menggunakan Eloquent ORM (Object-Relational Mapping) untuk berinteraksi dengan database. Berikut beberapa metode penting:

  • Menampilkan semua data $residents = Resident::all();
  • Menampilkan data berdasarkan ID $resident = Resident::find(1);
  • Menambahkan data baru Resident::create([ 'nik' => '1234567890123456', 'name' => 'John Doe', 'gender' => 'male', 'birth_date' => '1990-01-01', 'birth_place' => 'Jakarta', 'address' => 'Jl. Merdeka No. 1', 'religion' => 'Islam', 'marital_status' => 'single', 'occupation' => 'Programmer', 'phone' => '08123456789', 'status' => 'active' ]);
  • Mengupdate data $resident = Resident::find(1); $resident->update(['name' => 'Jane Doe']);
  • Menghapus data Resident::destroy(1);

2. Controller dalam Laravel

Controller dalam Laravel bertugas untuk menangani logika aplikasi, menghubungkan Model dan View, serta mengelola request dari pengguna.

2.1. Cara Membuat Controller

Gunakan perintah berikut untuk membuat controller:

php artisan make:controller ResidentController

File controller akan dibuat di app/Http/Controllers/ResidentController.php.

2.2. Struktur Controller

Berikut adalah contoh ResidentController:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Resident;

class ResidentController extends Controller
{
    // Menampilkan semua data
    public function index()
    {
        $residents = Resident::all();
        return view('residents.index', compact('residents'));
    }

    // Menampilkan form tambah data
    public function create()
    {
        return view('residents.create');
    }

    // Menyimpan data ke database
    public function store(Request $request)
    {
        Resident::create($request->all());
        return redirect()->route('residents.index')->with('success', 'Data berhasil ditambahkan.');
    }

    // Menampilkan detail data
    public function show($id)
    {
        $resident = Resident::find($id);
        return view('residents.show', compact('resident'));
    }

    // Menampilkan form edit data
    public function edit($id)
    {
        $resident = Resident::find($id);
        return view('residents.edit', compact('resident'));
    }

    // Memperbarui data
    public function update(Request $request, $id)
    {
        $resident = Resident::find($id);
        $resident->update($request->all());
        return redirect()->route('residents.index')->with('success', 'Data berhasil diperbarui.');
    }

    // Menghapus data
    public function destroy($id)
    {
        Resident::destroy($id);
        return redirect()->route('residents.index')->with('success', 'Data berhasil dihapus.');
    }
}

2.3. Menghubungkan Controller dengan Routes

Tambahkan rute berikut di routes/web.php:

use App\Http\Controllers\ResidentController;

Route::resource('residents', ResidentController::class);

Route resource di atas akan otomatis membuat semua endpoint CRUD untuk controller.


3. View dalam Laravel

View dalam Laravel adalah bagian yang menangani tampilan antarmuka pengguna. File View menggunakan template Blade dengan ekstensi .blade.php yang terdapat di dalam folder resources/views.

3.1. Cara Membuat View

Buat folder residents di dalam resources/views, lalu buat beberapa file:

  • index.blade.php (menampilkan daftar data)
  • create.blade.php (form tambah data)
  • edit.blade.php (form edit data)
  • show.blade.php (detail data)

3.2. Contoh View untuk Menampilkan Data

File: resources/views/residents/index.blade.php

@extends('layouts.app')

@section('content')
    <h1>Daftar Penduduk</h1>
    <a href="{{ route('residents.create') }}">Tambah Data</a>
    <table border="1">
        <tr>
            <th>NIK</th>
            <th>Nama</th>
            <th>Aksi</th>
        </tr>
        @foreach ($residents as $resident)
            <tr>
                <td>{{ $resident->nik }}</td>
                <td>{{ $resident->name }}</td>
                <td>
                    <a href="{{ route('residents.show', $resident->id) }}">Detail</a>
                    <a href="{{ route('residents.edit', $resident->id) }}">Edit</a>
                    <form action="{{ route('residents.destroy', $resident->id) }}" method="POST">
                        @csrf
                        @method('DELETE')
                        <button type="submit">Hapus</button>
                    </form>
                </td>
            </tr>
        @endforeach
    </table>
@endsection

Kesimpulan

Dalam Laravel, Model, Controller, dan View (MVC) bekerja bersama untuk membangun aplikasi yang terstruktur dan mudah dikelola:

  • Model berfungsi untuk berinteraksi dengan database.
  • Controller menangani logika aplikasi dan menghubungkan model dengan tampilan.
  • View bertanggung jawab untuk menampilkan data ke pengguna.

Dengan memahami konsep MVC ini, pengembangan aplikasi Laravel menjadi lebih efisien, terstruktur, dan mudah untuk dikembangkan lebih lanjut.