Memahami Tentang Model di Laravel 11
Model dalam Laravel adalah representasi dari tabel dalam database. Mereka memungkinkan Anda untuk berinteraksi dengan data dalam database menggunakan objek PHP, yang disebut model Eloquent. Model Eloquent memungkinkan Anda untuk melakukan berbagai operasi terhadap data, seperti menyimpan, mengambil, memperbarui, dan menghapus data dengan cara yang mudah dan terstruktur.
Penjelasan Detail Model Artikel
Mari kita perinci setiap bagian dari model Artikel
yang Anda berikan:
-
Namespace dan Penggunaan Trait
HasFactory
:namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Artikel extends Model { use HasFactory; // ... }
namespace App\Models;
: Mendefinisikan namespace dari model. Dalam Laravel, model biasanya disimpan di dalam direktoriapp/Models
.use Illuminate\Database\Eloquent\Factories\HasFactory;
: Menggunakan traitHasFactory
, yang digunakan untuk menyediakan methodfactory()
yang dapat digunakan untuk membuat data uji (dummy data) atau data dalam testing.
-
Mendefinisikan Model
Artikel
:class Artikel extends Model { use HasFactory; // ... }
class Artikel extends Model
: Mendeklarasikan modelArtikel
yang merupakan turunan dari kelasModel
dari Eloquent. Ini menghubungkan model dengan tabelartikels
(secara default nama tabel berdasarkan konvensi Laravel, namun bisa disesuaikan jika diperlukan).
-
Properti
$fillable
:protected $fillable = [ 'title', 'body', 'image', 'slug', ];
$fillable
: Mendefinisikan kolom-kolom yang diizinkan untuk diisi secara massal (mass assignment). Kolom-kolom yang terdaftar di sini dapat diisi menggunakan metodecreate()
atauupdate()
tanpa menyebabkan pengecualianMassAssignmentException
.
-
Relasi
category()
:public function category() { return $this->belongsToMany(Category::class); }
category()
: Mendefinisikan relasi antara modelArtikel
danCategory
. Fungsi ini menggunakan metodebelongsToMany
yang menunjukkan bahwa setiapArtikel
dapat terhubung dengan banyakCategory
dan sebaliknya. Ini mengimplikasikan adanya tabel pivot (biasanyaartikel_category
) yang menghubungkan kedua tabel tersebut.
-
Accessor
getPictureAttribute()
:public function getPictureAttribute() { return asset('storage/' . $this->image); }
getPictureAttribute()
: Ini adalah sebuah accessor dalam Eloquent yang memungkinkan Anda untuk memanipulasi nilai kolomimage
sebelum dikembalikan kepada pengguna. Di sini,asset('storage/' . $this->image)
digunakan untuk menghasilkan URL lengkap gambar yang terkait dengan artikel.
Kesimpulan
Model Artikel
dalam contoh ini menyediakan representasi objek untuk entitas artikel
dalam aplikasi Laravel. Melalui model ini, Anda dapat melakukan operasi CRUD (Create, Read, Update, Delete) pada data artikel
, menentukan relasi antara artikel
dan category
, serta menyediakan aksesors untuk memanipulasi nilai sebelum ditampilkan. Model Eloquent Laravel memudahkan pengembang untuk mengelola dan berinteraksi dengan data dalam database secara efisien dan terstruktur.