Dalam Laravel, relasi digunakan untuk menghubungkan dua atau lebih model dan memfasilitasi akses data terkait di antara mereka. Ada beberapa jenis relasi yang dapat Anda gunakan dalam Laravel, dan ini sangat bermanfaat ketika Anda bekerja dengan basis data yang terstruktur.
Berikut adalah beberapa jenis relasi yang umum digunakan:
One to One Relationship:
Relasi satu-ke-satu digunakan ketika setiap entitas dalam model pertama memiliki satu entitas terkait dalam model kedua, dan sebaliknya. Contoh: relasi antara pengguna (users) dan profil (profiles).
php
Copy code
// Di model User
public function profile()
{
return $this->hasOne(Profile::class);
}
// Di model Profile
public function user()
{
return $this->belongsTo(User::class);
}
One to Many Relationship:
Relasi satu-ke-banyak digunakan ketika setiap entitas dalam model pertama memiliki banyak entitas terkait dalam model kedua. Contoh: relasi antara penulis (authors) dan buku (books).
php
Copy code
// Di model Author
public function books()
{
return $this->hasMany(Book::class);
}
// Di model Book
public function author()
{
return $this->belongsTo(Author::class);
}
Many to Many Relationship:
Relasi banyak-ke-banyak digunakan ketika setiap entitas dalam model pertama dapat berhubungan dengan banyak entitas dalam model kedua dan sebaliknya. Contoh: relasi antara pengguna (users) dan peran (roles).
php
Copy code
// Di model User
public function roles()
{
return $this->belongsToMany(Role::class);
}
// Di model Role
public function users()
{
return $this->belongsToMany(User::class);
}
Has Many Through Relationship:
Relasi Has Many Through digunakan untuk mengakses data melalui model yang terhubung. Contoh: relasi antara negara (countries), provinsi (states), dan kota (cities).
php
Copy code
// Di model Country
public function cities()
{
return $this->hasManyThrough(City::class, State::class);
}
Polymorphic Relationship:
Relasi polimorfik memungkinkan model untuk berhubungan dengan banyak model pada satu kolom. Contoh: relasi antara komentar (comments) dan berita (posts) atau video.
php
Copy code
// Di model Comment
public function commentable()
{
return $this->morphTo();
}
// Di model Post
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
// Di model Video
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}