Tutorial Laravel 11 #4: Membuat Model, Controller, dan Route

-

Halo teman-teman semuanya! Di artikel part keempat ini, kita akan melanjutkan seri "Tutorial Laravel 11 untuk Pemula" dengan mempelajari cara Membuat Model, Controller, dan Route di Laravel. Pada step ini, kita akan membangun pondasi awal yang sangat penting sebelum melanjutkan ke fitur-fitur seperti menampilkan data, menambah data, dan sebagainya. Mari kita bahas!

Apa Itu Model, Controller, dan Route di Laravel?

Model: Representasi dari data di aplikasi kita. Model berhubungan langsung dengan tabel di database dan menyediakan cara untuk berinteraksi dengan data tersebut, seperti menyimpan, mengupdate, atau menghapus data.

Controller: Tempat logika aplikasi ditulis. Controller menerima request dari user, memprosesnya, dan mengembalikan response. Controller membantu memisahkan logika dari tampilan (view).

Route: Menghubungkan URL tertentu dengan fungsi di Controller sehingga aplikasi tahu apa yang harus dilakukan saat URL diakses.

Langkah-Langkah Membuat Model, Controller, dan Route

1. Membuat Model

Model di Laravel mewakili tabel di database. Misalnya, kita akan membuat model untuk tabel products yang sudah kita buat di part sebelumnya.

Jalankan perintah ini di terminal:

php artisan make:model Product

Perintah di atas akan membuat file model Product.php di folder app/Models/.

2. Menghubungkan Model dengan Tabel

Buka file Product.php yang baru saja dibuat, lalu tambahkan properti berikut untuk menghubungkan model dengan tabel products yang pada part sebelumnya sudah kita buat melalui migration:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Product extends Model { use HasFactory; protected $table = 'products'; // Nama tabel yang direpresentasikan oleh model ini. protected $fillable = ['image', 'name', 'description', 'price']; // Daftar kolom yang diizinkan untuk diisi secara massal (mass assignment). }
  • $table: Di sini, kita mendefinisikan nama tabel yang akan direpresentasikan oleh model ini. Jika nama tabel dan nama modelnya sudah sesuai, kita sebenarnya tidak perlu menuliskan properti $table lagi. Laravel secara otomatis akan menggunakan nama tabel yang merupakan bentuk jamak dari nama model. Misalnya, kalau model kita bernama Product, Laravel akan mencari tabel dengan nama products. Jadi, jika nama tabel dan modelnya sama, kita tidak perlu menambahkan $table, kecuali kalau kita ingin menggunakan nama tabel yang berbeda.

    Misalnya, nama tabelnya adalah produk, dan kita ingin menggunakan tabel dengan nama tersebut, meskipun model kita bernama Product. Maka, kita harus menambahkan properti $table seperti ini:

    protected $table = 'produk';
  • $fillable: Properti ini digunakan untuk menentukan column mana saja yang bisa diisi secara massal (mass assignment). Dalam contoh ini, hanya kolom image, name, description, dan price yang boleh diisi langsung saat membuat atau memperbarui data Product. Kita menggunakan $fillable untuk mencegah adanya Mass Assignment Vulnerability, di mana column yang seharusnya tidak bisa diubah oleh user, tetap bisa diisi tanpa kontrol.

Contoh: Misalnya kamu mengirimkan data lewat form untuk membuat produk baru, hanya kolom image, name, description, dan price yang bisa diisi, dan kolom lainnya tidak bisa diisi.

Intinya, jika nama tabel dan model sudah sesuai dengan konvensi Laravel, kita tidak perlu menuliskan properti $table. Namun, kalau kita ingin menggunakan nama tabel yang berbeda dari konvensi itu, kita harus menuliskan $table seperti pada kode di atas.

3. Membuat Controller

Controller akan menangani logika aplikasi kita. Untuk membuat controller, jalankan perintah berikut:

php artisan make:controller ProductController

Perintah ini akan membuat file ProductController.php di folder app/Http/Controllers/.

4. Menambahkan Function ke Controller

Untuk saat ini, kita akan membuat fungsi sederhana untuk menampilkan view dan memastikan routing dan logika dasar kita berjalan. Buka file ProductController.php, lalu tambahkan fungsi berikut:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ProductController extends Controller { public function index() { return view('products.index'); } }

Penjelasan:

  • index(): Fungsi ini akan mengembalikan view products.index.

5. Menambahkan Route

Route digunakan untuk menghubungkan URL dengan fungsi di Controller. Buka file routes/web.php dan tambahkan kode berikut:

use App\Http\Controllers\ProductController; Route::get('/products', [ProductController::class, 'index']);

Penjelasan:

  • /products: URL yang akan digunakan untuk mengakses daftar produk.
  • ProductController::class, 'index': Menghubungkan URL /products ke fungsi index() di ProductController.

6. Membuat View untuk Daftar Produk

Sekarang, buat file view untuk menampilkan daftar produk di folder resources/views/products. Buat file index.blade.php dan tambahkan kode berikut:

<!-- resources/views/products/index.blade.php --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Daftar Produk</title> </head> <body> <h1>Daftar Produk</h1> </body> </html>

Penjelasan:

  • Pada file index.blade.php ini, kita hanya menampilkan judul dan sedikit keterangan bahwa daftar produk akan ditampilkan pada bagian selanjutnya. Nantinya, data produk akan diambil dari database dan ditampilkan di view ini pada part berikutnya.

7. Testing Route di Browser

Sekarang saatnya kita tes apakah semuanya berjalan dengan baik. Jalankan server Laravel dengan perintah php artisan serve. Kemudian, buka browser dan akses URL berikut 127.0.0.1:8000/products.

Jika berhasil, kamu akan melihat halaman dengan judul "Daftar Produk" seperti gambar di bawah ini:

Pada seri tutorial ini kita telah berhasil membuat model, controller, dan route yang mengarah ke view kosong. Langkah selanjutnya adalah menambahkan logika untuk menampilkan data produk dari database dan fitur lainnya yang akan dibahas pada part-part berikutnya.

Semoga tutorial ini bermanfaat dan membantu kalian dalam memahami dasar-dasar pembuatan model, controller, dan route di Laravel 11. Sampai jumpa di tutorial selanjutnya.


Artikel ini dibaca sebanyak199kali

#Laravel

About Author

Fullstack Developer at Media Koding

Brian Harris

Follow me on