Cara Menggunakan Eloquent Relationship di Laravel (One to Many & Many to Many)

Salah satu kekuatan terbesar Laravel adalah Eloquent Relationship โ€” cara mengelola relasi antar-tabel tanpa menulis query JOIN manual. Memahami ini membuat kode Anda jauh lebih ber...

Cara Menggunakan Eloquent Relationship di Laravel (One to Many & Many to Many)
  1. Cara Menggunakan Eloquent Relationship di Laravel (One to Many & Many to Many) โ€” Anda di sini

Salah satu kekuatan terbesar Laravel adalah Eloquent Relationship โ€” cara mengelola relasi antar-tabel tanpa menulis query JOIN manual. Memahami ini membuat kode Anda jauh lebih bersih. Artikel ini membahas tiga relasi paling umum beserta contohnya.

1. One to One (hasOne / belongsTo)

Contoh: satu User punya satu Profile. Definisikan di model:

// Model User
public function profile()
{
    return $this->hasOne(Profile::class);
}

// Model Profile
public function user()
{
    return $this->belongsTo(User::class);
}

Mengaksesnya:

$user = User::find(1);
echo $user->profile->bio;

2. One to Many (hasMany)

Contoh paling umum: satu Category punya banyak Post.

// Model Category
public function posts()
{
    return $this->hasMany(Post::class);
}

// Model Post
public function category()
{
    return $this->belongsTo(Category::class);
}

Mengaksesnya:

$category = Category::find(1);
foreach ($category->posts as $post) {
    echo $post->title;
}

// arah sebaliknya
$post = Post::find(1);
echo $post->category->name;

3. Many to Many (belongsToMany)

Contoh: satu Post punya banyak Tag, dan satu Tag dipakai banyak Post. Relasi ini butuh tabel pivot (mis. post_tag).

// Model Post
public function tags()
{
    return $this->belongsToMany(Tag::class);
}

// Model Tag
public function posts()
{
    return $this->belongsToMany(Post::class);
}

Menambah relasi lewat pivot:

$post = Post::find(1);
$post->tags()->attach([1, 2, 3]);   // tambah tag
$post->tags()->detach(2);           // hapus satu
$post->tags()->sync([1, 3]);        // set ulang

Hindari N+1 Query dengan Eager Loading

Saat menampilkan banyak data beserta relasinya, gunakan with() agar tidak boros query:

$posts = Post::with('category', 'tags')->get();

Tanpa ini, setiap post akan menjalankan query terpisah untuk relasinya โ€” masalah performa klasik.

Kesimpulan

Eloquent Relationship membuat pengelolaan relasi antar-tabel jadi intuitif: hasOne/hasMany untuk relasi "punya", belongsTo untuk "milik", dan belongsToMany untuk relasi banyak-ke-banyak lewat pivot. Selalu pakai eager loading (with()) untuk performa. Untuk tips performa lainnya, lihat panduan optimasi performa Laravel kami.

eloquent relationship laravel relasi database laravel hasMany belongsTo laravel many to many laravel laravel relasi tabel
Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’