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 :
-
app/Models/Post.php
-
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