- Langkah 1 - Membuat Model dan Migration Post
- Langkah 2 - Menambahkan Field di dalam Migration
- Langkah 3 - Menambahkan Mass Assignment
- Langkah 4 - Konfigurasi Relationships (Has Many)
- Langkah 5 - Konfigurasi Relationships (Belongs To)
- Langkah 6 - Menjalankan Proses Migrate
- Kesimpulan
Halo teman-teman semuanya, setelah sebelumnya kita berhasil membuat CRUD Categories menggunakan fitur Resource dari Laravel Filament 5, maka pada kesempatan kali ini kita semua akan belajar membuat Model dan Migration untuk data Post.
Pada tutorial ini, 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.phpdatabase/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php
INFORMASI : Nama file migration akan berbeda-beda sesuai dengan waktu pembuatannya.
Langkah 2 - Menambahkan Field di dalam Migration
Setelah file migration berhasil dibuat, selanjutnya kita akan menambahkan beberapa field atau kolom di dalam table posts.
Silahkan teman-teman buka file migration-nya, kemudian pada function up ubah kode-nya menjadi seperti berikut ini.
database/migrations/xxxx_xx_xx_xxxxxx_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 beberapa field berikut:
| FIELD / KOLOM | TIPE DATA | OPTION |
|---|---|---|
category_id |
- | foreign key |
image |
string |
- |
title |
string |
- |
content |
text |
- |
Kolom category_id nantinya akan digunakan sebagai relasi antara data Post dan Category.
Langkah 3 - Menambahkan Mass Assignment
Agar field-field yang telah kita buat bisa dimanipulasi dan disimpan ke dalam database, kita perlu 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\Model;
class Post extends Model
{
/**
* fillable
*
* @var array
*/
protected $fillable = [
'category_id',
'image',
'title',
'content',
];
}
Di atas, kita menambahkan properti $fillable yang berisi field-field yang ada di dalam table posts.
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\Model;
class Category extends Model
{
/**
* 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 posts() yang mendefinisikan relasi hasMany 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\Model;
class Post extends Model
{
/**
* fillable
*
* @var array
*/
protected $fillable = [
'category_id',
'image',
'title',
'content',
];
/**
* category
*
* @return void
*/
public function category()
{
return $this->belongsTo(Category::class);
}
}
Dengan penambahan method category(), maka relasi antara Post dan Category sudah lengkap.
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 5.
Terima Kasih
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...