Tutorial Laravel 12 dan Filament 5 #4 Membuat Model Category

Belajar Laravel 12 dan Filament 5 dari dasar hingga tingkat lanjut melalui tutorial yang lengkap dan mudah dipahami. Laravel 12 merupakan framework PHP yang powerful untuk membangun aplikasi web modern, sedangkan Filament 5 adalah framework admin panel berbasis Laravel generasi terbaru yang memanfaatkan Livewire dan modern UI untuk membangun dashboard, manajemen data, hingga aplikasi kompleks dengan lebih cepat, efisien, dan terstruktur.

✅ Telah dilihat 2727 kali

Rating: 5.00 ⭐

... 17 February 2026, 08:06

img

Untuk membuat sebuah model di dalam Laravel, kita bisa memanfaatkan perintah artisan berikut:

php artisan make:model Category -m

Mari kita pahami bagian-bagiannya:

  1. php artisan make:model Category Perintah ini digunakan untuk membuat sebuah model baru dengan nama Category. Model adalah representasi dari tabel di database dan menjadi penghubung antara logika aplikasi dengan data.
  2. -m Opsi -m berarti sekaligus membuat file migration untuk model tersebut. Migration ini berfungsi sebagai “peta” untuk membentuk struktur tabel di database (misalnya menambahkan kolom idnamecreated_at, dan seterusnya).

Dengan menjalankan perintah di atas, Laravel akan otomatis membuat dua file utama:

  INFO  Model [C:\Users\LagiKoding\Desktop\laravel-filament\app\Models\Category.php] created successfully.

   INFO  Migration [C:\Users\LagiKoding\Desktop\laravel-filament\database\migrations\2025_08_20_124208_create_categories_table.php] created successfully.

Konfigurasi Migration

Setelah kita membuat model Category dengan opsi -m, Laravel juga otomatis membuatkan file migrasi. Misalnya dengan nama:

2025_08_20_124208_create_categories_table.php

Nah, silakan buka file tersebut. Di dalam fungsi up(), kita bisa mengatur struktur tabel categories sesuai kebutuhan. Berikut contoh konfigurasi yang bisa digunakan:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');                
            $table->string('slug')->unique();       
            $table->string('image')->nullable();
            $table->text('description')->nullable(); 
            $table->boolean('is_active')->default(true);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('categories');
    }
};

Struktur Tabel categories

Nama Kolom Tipe Data Keterangan
id bigint (20) Primary key, auto increment. Digunakan sebagai identitas unik setiap kategori.
name varchar (255) Menyimpan nama kategori. Maksimal 255 karakter.
slug varchar (255)unique Menyimpan slug kategori (biasanya untuk URL). Harus unik.
image varchar (255)nullable Menyimpan nama/path file gambar kategori. Bisa kosong (opsional).
description text Menyimpan deskripsi kategori. Bisa panjang, tidak terbatas 255 karakter. Bisa null.
is_active boolean (tinyint 1) Status aktif/tidak. Default = true (1).
created_at timestamp Waktu kapan data dibuat. Diisi otomatis oleh Laravel.
updated_at timestamp Waktu kapan data terakhir diperbarui. Diisi otomatis oleh Laravel.

Jadi, dengan migrasi di atas, tabel categories sudah cukup lengkap untuk kebutuhan dasar sebuah kategori: ada nama, slug, gambar, deskripsi, serta status aktif.

Konfigurasi Model

Silakan buka file model category yang terletak di:

app\Models\Category.php

kemudian, ubah secara keseluruhan menjadi seperti berikut ini:

<?php

namespace App\Models;

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

class Category extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'slug',
        'description',
        'image',
        'is_active',
    ];
}

Namespace & Import

namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  • namespace App\Models; → menandakan bahwa file ini berada di dalam folder app/Models.
  • use Illuminate\Database\Eloquent\Factories\HasFactory; → trait bawaan Laravel yang memungkinkan kita membuat data dummy (seeder) menggunakan model factory.
  • use Illuminate\Database\Eloquent\Model; → class Model dari Eloquent yang menjadi induk semua model di Laravel.

Class Category

class Category extends Model
  • Mendefinisikan class Category yang mewarisi (extends) Model.
  • Dengan ini, Category otomatis terhubung dengan tabel categories di database (Laravel secara default menggunakan bentuk jamak dari nama model).

Trait HasFactory

use HasFactory;
  • Trait ini dipakai agar kita bisa dengan mudah membuat factory untuk model ini, misalnya ketika kita ingin mengisi data dummy kategori untuk keperluan testing.

Property $fillable

protected $fillable = [
    'name',
    'slug',
    'description',
    'image',
    'is_active',
];
  • $fillable adalah daftar kolom mana saja yang boleh di-isi massal (mass assignment).
  • Jadi, saat kita melakukan Category::create([...]), hanya field yang ada di $fillable inilah yang bisa diisi.
  • Hal ini berguna untuk mencegah Mass Assignment Vulnerability (pengisian kolom secara sembarangan yang bisa membahayakan data).

Migrate

Langkah berikutnya adalah melakukan migrasi untuk table categories dengan cara :

php artisan migrate

Dengan konfigurasi ini, model Category sudah siap digunakan untuk operasi dasar seperti CRUD (Create, Read, Update, Delete) pada tabel categories.

Pada materi berikutnya, kita akan membuat sebuah model dan migrasi lagi untuk mengelola data Posts.

Daftar eBook