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.