Yazılım Geliştirme

Laravel’de HasManyThrough İlişkisi Nedir?

📅 Feb 02, 2026
HasManyThrough, Laravel’in Eloquent ORM’inde dolaylı ilişkileri temsil etmek için kullanılır. Yani bir modelin başka bir modele ara bir model üzerinden erişmesini sağlar.

Bunu “Model A → Model B → Model C” ilişkisi olarak düşünebilirsiniz:

  • A modelinin B modeli ile ilişkisi var.
  • B modelinin de C modeli ile ilişkisi var.
  • A modelinden doğrudan C modeline ulaşmak istediğinizde HasManyThrough kullanırsınız.

Örnek Senaryo: Ülke → Kullanıcı → Post

Diyelim ki bir blog projesinde şöyle bir yapı var:

  • Country (ülke)
  • User (kullanıcı)
  • Post (yazı)

İlişkiler:

  • Bir ülkenin birden fazla kullanıcısı var (Country → User)
  • Bir kullanıcının birden fazla yazısı var (User → Post)
  • Peki bir ülkedeki tüm yazılara direkt olarak erişmek istersek? İşte burada HasManyThrough devreye girer.
                                     <?php

class Country extends Model
{
// Country üzerinden direkt Post'lara erişim
public function posts()
{
return $this->hasManyThrough(Post::class, User::class);
}
}

class User extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
public function country()
{
return $this->belongsTo(Country::class);
}
}

class Post extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
Country modeli artık tüm Post’lara tek bir ilişki ile erişebilir.
                                     <?php

$country = Country::find(1);
$posts = $country->posts; // Ülkeye ait tüm kullanıcıların yazıları
📌 Yazı Bilgileri
  • Kod Temizliği: Ara modeller üzerinden dolaylı ilişkileri tek satırla yönetebilirsiniz.
  • Performans: Eloquent, gerekli join’leri arka planda yapar ve sorgular optimize edilir.
  • Sadelik: Karmaşık SQL join’lerini manuel yazmaya gerek kalmaz, ORM üzerinden okunabilir bir yapı elde edilir.
🏷 Etiketler
HasManyThrough Laravel Eloquent ORM Relationships