Tutorial Laravel 12 dan Filament 4 #5 Model Post

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

✅ Telah dilihat 373 kali

Rating: 5.00 ⭐

... 20 August 2025, 14:59

Model Post

Selain model Category, dalam studi kasus ini kita akan membuat sebuah model lagi yakni untuk menyimpan data posts, seperti pada langkah sebelumnya, silakan jalankan perintah berikut ini:

php artisan make:model Post -m

Mari kita pahami bagian-bagiannya:

  1. php artisan make:model Post Perintah ini digunakan untuk membuat sebuah model baru dengan nama Post. 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 idtitlecontentcreated_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\Post.php] created successfully.

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

Konfigurasi Migration

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

2025_08_21_124208_create_posts_table.php

Nah, silakan buka file tersebut. Di dalam fungsi up(), kita bisa mengatur struktur tabel posts 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('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');                       // Judul postingan
            $table->text('content');                       // Isi konten
            $table->string('image')->nullable();           // Gambar post (opsional)
            $table->foreignId('user_id')->constrained()->onDelete('cascade');     
            $table->foreignId('category_id')->constrained()->onDelete('cascade'); 
            $table->timestamps();
        });
    }

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

Struktur Tabel posts

Nama Kolom Tipe Data Keterangan
id bigint (20) Primary key, auto increment. Identitas unik setiap post.
title varchar(255) Menyimpan judul post.
content text Menyimpan isi/konten dari post. Bisa panjang.
image varchar(255), nullable Menyimpan path/nama file gambar untuk post. Bisa kosong.
user_id bigint (20), foreign key Relasi ke tabel users. Menandakan siapa penulis post.
category_id bigint (20), foreign key Relasi ke tabel categories. Menandakan kategori post.
created_at timestamp Waktu kapan post dibuat. Diisi otomatis oleh Laravel.
updated_at timestamp Waktu kapan post terakhir diupdate. Diisi otomatis oleh Laravel.

Konfigurasi Model

Silakan buka file model post yang terletak di:

app\Models\Post.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 Post extends Model
{
    use HasFactory;

    protected $fillable = [
        'title',
        'content',
        'image',
        'user_id',
        'category_id',
    ];
}

Namespace & Import

namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  • namespace App\Models; → menandakan file ini berada di dalam folder app/Models.
  • use HasFactory; → trait bawaan Laravel untuk memudahkan membuat data dummy dengan factory.
  • use Model; → class induk Eloquent ORM.

Property $fillable

protected $fillable = [
    'title',
    'content',
    'image',
    'user_id',
    'category_id',
];
  • $fillable adalah daftar kolom yang boleh di-isi massal.
  • Berguna untuk mencegah mass assignment vulnerability.

Materi Selanjutnya

Setelah kita memahami bagaimana membuat model dan migration, langkah berikutnya adalah mengenal Eloquent ORM (Object Relational Mapping).

Eloquent ORM adalah fitur bawaan Laravel yang memungkinkan kita berinteraksi dengan database menggunakan objek PHP, tanpa perlu menulis query SQL secara manual.

Daftar eBook