Laravel Eloquent ORM Çoka Çok İlişki (Many to Many)

Many to Many

Bundan önceki yazılarımda bire bir, bire çok ilişki türlerini görmüştük şimdi çoka çok ilişki türünü görelim. Çok çok ilişkileri şu şekilde düşünebiliriz mesela bir okulda öğrencilerin derslerini düşünelim, bir öğrenci birden fazla ders seçebilmekte ve bir dersi de birden fazla öğrenci alabilmektedir bu gibi durumlarda çoka çok ilişki türünü kullanırız. Çoka çok ilişki türlerinde aracı görevi gören ikinc bir tabloya ihtiyac duyarız. Mesela örneğimizde bu aracı tablo öğrenci dersleri adında bir tablo olabilir.

ogrenciler tablosu

dersler tablosu

ogrenci_dersler tablosu

ogrenciler.php (model dosyası)


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ogrenciler extends Model
{
protected $table = “ogrenciler”;

public function dersler()
{
return $this->belongsToMany(‘App\dersler’,’ogrenci_dersler’,’ogrenci_id’,’id’);
}
}


Burada yazdığımız kodlarda; dersler adında bir metod oluşturduk daha sonra belongstoMany metodunu kullanarak çoka çok ilişki türünü kullanacağımızı belirttik. BelongstoMany metodunda parantezin içinde yazdığımız ilk kısım dersler adında bir model nesnesi ile ilişki kuracağımızı belirtir ikinci kısım ise ogrenci_dersler adında bir tablonun aracı tablo olduğunu belirttik üçüncü kısımda ogrenci_dersler tablosunda bulunan öğrenciyi tanımlayan ikincil anahtarı belirttik ve son olarak dördüncü kısımda ogrenciler tablosunun birincil anahtarını belirttik.

web.php (yönlendirme sayfası)


Route::get(‘ogrenci/dersler’,function(){
$rows = ogrenciler::find(1)->dersler;
return view(“welcome”,compact(‘rows’));
});


welcome.blade.php (view sayfası)


@foreach($rows as $row)
{{$row->ders}}
@endforeach

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *