Tutorial Laravel Filament #5 : Membuat Model dan Migration Post


Tutorial Laravel Filament #5 : Membuat Model dan Migration Post

Halo teman-teman semuanya, setelah berhasil membuat CRUD dengan cepat dengan fitur Resource yang disediakan oleh Laravel Filament, maka pada kesempatan kali ini kita akan belajar membuat Model dan Migration untuk data Post. Disini kita juga akan menambahkan relasi antara table categories dan table posts.

Langkah 1 - Membuat Model dan Migration Post

Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.

php artisan make:model Post -m

Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru yang berada di dalam folder :

  1. app/Models/Post.php
  2. database/migrations/2024_09_21_021359_create_posts_table.php

Langkah 2 - Menambahkan Field di dalam Migraion

Setelah file Migration berhasil dibuat, maka kita akan menambahkan field/kolom di dalamnya. Silahkan teman-teman buka file migration-nya, kemudian pada function up ubah kode-nya menjadi seperti berikut ini.

database/migrations/2024_09_21_021359_create_posts_table.php

public function up(): void
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->foreignId('category_id');
        $table->string('image');
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

Dari perubahan kode di atas, kita menambahkan 3 field, yaitu :

FIELD / KOLOM TIPE DATA OPTION
category_id - foreign key
image string -
title string -
content text -

Langkah 3 - Menambahkan Mass Assignment

Silahkan teman-teman buka file app/Models/Post.php, kemudian ubah kode-nya menjadi seperti berikut ini.

app/Models/Post.php

<?php

namespace App\Models;

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

class Post extends Model
{
    use HasFactory;
    
    /**
     * fillable
     *
     * @var array
     */
    protected $fillable = [
        'category_id',
        'image',
        'title',
        'content'
    ];
}

Langkah 4 - Konfigurasi Relationships (Has Many)

Pertama, kita akan membuat relasi many dari Model Category ke Post. Artinya 1 data category bisa memiliki banyak data posts.

Silahkan teman-teman buka file app/Models/Category.php, kemudian ubah kode-nya menjadi seperti berikut ini.

app/Models/Category.php

<?php

namespace App\Models;

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

class Category extends Model
{
    use HasFactory;
    
    /**
     * fillable
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'description',
    ];

    /**
     * posts
     *
     * @return void
     */
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

Dari perubahan kode di atas, kita menambahkan method baru dengan nama posts dan di dalamnya membuat relasi many ke Model Post.

return $this->hasMany(Post::class);

Langkah 5 - Konfigurasi Relationships (Belongs To)

Setelah membuat relasi many, maka kita lanjutkan membuat relasi belongs to. Artinya memberi tahu bahwa data post ini dimiliki oleh sebuah category.

Silahkan buka file app/Models/Post.php, kemudian ubah kode-nya menjadi seperti berikut ini.

app/Models/Post.php

<?php

namespace App\Models;

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

class Post extends Model
{
    use HasFactory;
    
    /**
     * fillable
     *
     * @var array
     */
    protected $fillable = [
        'category_id',
        'image',
        'title',
        'content'
    ];

    /**
     * category
     *
     * @return void
     */
    public function category()
    {
        return $this->belongsTo(Category::class);
    }
}

Dari perubahan kode di atas, kita menambahkan method baru dengan nama category dan di dalamnya kita membuat relasi belongsTo ke dalam Model Category.

return $this->belongsTo(Category::class);

Langkah 6 - Menjalankan Proses Migrate

Terakhir, kita akan belajar menjalankan migrate, agar table beserta field yang sudah kita buat di dalam file migration digenerate di dalam database.

Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.

php artisan migrate

Kesimpulan

Pada artikel ini, kita semua telah belajar bagaimana membuat Model, Migration dan Relationships di dalam Laravel.

Pada artikel selanjutnya, kita semua akan belajar bagaimana cara membuat CRUD untuk data posts menggunakan Resource yang ada di dalam Laravel Filament.

Terima Kasih


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami