Laravel hasOne Ve hasMany Arasındaki Farklar

Laravel hasOne ile hasMany arasındaki farklar ve kullanımı...

hasOne (Birebir İlişki):

  • Anlamı: Bir modelin, başka bir modelle sadece bir tane ilişkisi vardır.
  • Örnek:
    • Bir kullanıcının tek bir profil kaydı olabilir.
    • Kullanıcı (User) → Profil (Profile)

Nasıl çalışır?

class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}
  • Sonuç: hasOne, tek bir kayıt döner.
    $user = User::find(1);
    $profile = $user->profile; // Kullanıcının profili
    

hasMany (Bireçok İlişki):

  • Anlamı: Bir modelin, başka bir modelle birden fazla ilişkisi olabilir.
  • Örnek:
    • Bir kullanıcının birden çok gönderisi olabilir.
    • Kullanıcı (User) → Gönderiler (Posts)

Nasıl çalışır?

class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}
  • Sonuç: hasMany, birden fazla kayıt döner.
    $user = User::find(1);
    $posts = $user->posts; // Kullanıcının gönderileri
    

 

 

 

Nasıl Çağırırım Mantığı

$user = User::find(1);
$galeri = $user->userGaleri;

foreach ($galeri as $item) {
    echo $item->id;
}

 


Farkı şöyle düşün:

  • hasOne: 1 kişi = 1 telefon numarası
  • hasMany: 1 kişi = Birden fazla telefon numarası

Hangisini kullanacağın, modeller arasındaki ilişkiye bağlıdır. Eğer bir model sadece bir başka modele bağlıysa hasOne, birden fazla modele bağlıysa hasMany kullanılır.



E-Bültenime Abone Ol



Anahtar Kelimeler: laravel,hasMany,hasOne
Yazan: Emre TENİK

Bu yazı: 40 kez okundu



Yorum Yap




Yorumlar: