Laravel hasOne ile tablo ilişkilendirme nasıl yapılır ?
Aaşağıda belirtilen şekilde Örnek Tablolarımıza göre kodlarımızı yazalım ve mantığını öğrenelim.
Örnek tablolar:
Kitap: | id | name |
Yazar: | id | name | kitapId |
Kitap Modeli içine yazılacak :
public function yazar(){
return $this->hasOne(Yazar::class,'kitapId','id');
}
Kullanım şekli :
Örnek 1: $kitap = Kitap::with('yazar')->get(); // Bu komut tüm kitapları, yazarı ile birlikte getirir.
foreach($kitap as $item){
echo $item->name . " -> ". $item->yazar->name; // Kitap adı ve yazar adını verir.
}
hasOne kullanımı bu şekildedir. Eğer bir kitabın sadece bir yazarı varsa hasOne kullanılmalıdır. Eğer bir kitabın, birden fazla yazarı mevcut ise, hasMany kullanmak gerekir.
hasOne kullanmadan, tablo ilişkilendirme için şu şekilde bir kullanım yapılabilir.
Model dosyasına yazılacak:
static function getName($kitapId){
return Yazar::where('kitapId',$kitapId)->first()->name;
}
Kullanım şekli :
$kitap = Kitap::all();
foreach($kitap as $item){
echo $item->name . " -> ". $item->Yazar::getName($item->id)->name; // Kitap adı ve yazar adını verir.
}
Yorum Gönder
Yorum Gönder