Home Paket Belajar Bootcamp Instruktur

Kuasai Eloquent ORM #2 - Mengenal Relasi One-to-One & One-to-Many

Pelajari Eloquent ORM Laravel dari dasar hingga mahir. Pahami berbagai jenis relasi seperti hasOne, hasMany, belongsTo, belongsToMany, hasManyThrough, hingga polymorphic relationship. Kuasai teknik query yang efisien menggunakan eager loading, constraint query, aggregate, subquery, serta cara menghindari N+1 Query agar aplikasi Laravel lebih cepat dan scalable. Materi disertai studi kasus dan best practice yang sering digunakan di proyek nyata.

✅ Telah dilihat 19 kali

Rating: 5.00 ⭐

... 08 June 2026, 19:34

One-to-One: hasOne&belongsTo

Contoh kasus: User memiliki satu Profile.

users
  id, name, email

profiles
  id, user_id, bio, avatar, website

Model User:

class User extends Model
{
    // User punya satu profile
    public function profile(): \Illuminate\Database\Eloquent\Relations\HasOne
    {
        return $this->hasOne(Profile::class);
    }
}

Model Profile:

class Profile extends Model
{
    // Profile milik satu user
    public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}

Cara penggunaan:

$user = User::find(1);

// Akses profile dari user
$bio = $user->profile->bio;

// Buat profile untuk user
$user->profile()->create([
    'bio'    => 'Laravel enthusiast',
    'avatar' => 'avatar.jpg',
]);

// Akses user dari profile
$profile = Profile::find(1);
$name    = $profile->user->name;

One-to-Many: hasMany& belongsTo

Contoh kasus: User memiliki banyak Post.

users
  id, name

posts
  id, user_id, title, body

Model User:

class User extends Model
{
    // User punya banyak post
    public function posts(): \Illuminate\Database\Eloquent\Relations\HasMany
    {
        return $this->hasMany(Post::class);
    }
}

Model Post:

class Post extends Model
{
    // Post milik satu user
    public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}

Cara penggunaan:

$user = User::find(1);

// Ambil semua post user
$posts = $user->posts;

// Ambil post yang dipublish saja
$published = $user->posts()->where('published_at', '!=', null)->get();

// Tambah post baru
$user->posts()->create([
    'title' => 'Post Baru',
    'body'  => 'Konten post...',
]);

// Hitung jumlah post
$count = $user->posts()->count();

Kunci Foreign Key

Laravel otomatis menebak foreign key dengan konvensi {nama_model}_id. Kamu bisa override jika berbeda:

// Jika foreign key bukan 'user_id' tapi 'author_id'
public function posts(): HasMany
{
    return $this->hasMany(Post::class, 'author_id');
}

Ringkasan Episode 2

Relasi Method Digunakan di
hasOne $this->hasOne(Model::class) Parent model
hasMany $this->hasMany(Model::class) Parent model
belongsTo $this->belongsTo(Model::class) Child model

Daftar eBook