Laravel Eloquent ORM İlişkiler(Relationships)

Eloquent ORM de Relotionshipsler, iki veri tabanını birbirine bağlarken kullanacağımız yöntemdir. Tablolar arasında; bire-bir, bire-çok ve çoka-çok ilişki olmak üzere 3 tane ilişki türü bulunmaktadır.

Bire Bir İlişki (One to One)

Bir tablodaki bir alanın diğer tablodaki sadace bir alanla ilişkili olmasılısıdır. Örnek verecek olursak, bir öğrenciler tablomuz birde biyografi tablomuz olduğunu düşünelim ve her öğrencinin sadece bir biyografisi olabilmektedir ve her biyografide bir öğrenciye ait olmak zorundadır işte bu tür veri tabanı ilişkilerine bire bir ilişki denmektedir. Şimdi verdiğmiz örneği uygulayalım. ilk olarak “ogrenciler” ve “biyografi” model nesnelerimizi ve migrationsları oluşturalım. “php artisan make:model ogrenciler -m” ve  “php artisan make:model biyografi -m” komutlarını komut satırından girerek migrations ve model nesnelerimizi oluşturalım.

ogrenciler Migrations

public function up()
{
Schema::create(‘ogrenciler’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘isim’);
$table->integer(‘no’);
$table->timestamps();
});

public function down()
{
Schema::dropIfExists(‘ogrenciler’);
}

biyografi Migrations

public function up()
{
Schema::create(‘biyografi’, function (Blueprint $table) {
$table->increments(‘id’);
$table->integer(“ogrenci_id”);
$table->string(“biyografi”);
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists(‘biyografi’);
}

biyografi.php(Model Nesnesi)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class biyografi extends Model
{
protected $table = “biyografi”;
}

ogrenciler.php(Model Nesnesi)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ogrenciler extends Model
{
protected $table = “ogrenciler”;
public function biyografi()
{
return $this->hasOne(“App\biyografi”,”ogrenci_id”,”id”);
}
}

Yazdığımız kodlarda, protected $table= “ogrenciler” kodunu yazarak bu model nesnesi üzerinden hangi tablo ile ilişki kuracağımızı belirttik.  Daha sonra biyografi adında bir metod oluşturduk, hasOne metodunu kullanarak bire bir ilişki yapacağımızı belirttik daha sonra hangi model nesnesi ile ilişki kuracağımızı belirttik daha sonra ise biyografi tablomuzda bulunan ikincil anahtarı ve ogrenci tablomuzda bulunan birincil anahtarı belirttik.

Şimdi bu işlemi birde tersten yapalım yani bu sefer ilişkiyi biyografi model nesnemizde belirleyelim.

 

biyografi.php(Model Nesnesi)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

public function ogrenciler()
{
return $this->belongsTo(‘App\ogrenciler’,’ogrenci_id’,’id’);
}

}

ogrenciler.php(Model Nesnesi)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

}

Biyografi model nesnemizde ilişkiyi kurarken bu sefer belongsTo metodunu kullandık daha sonra hangi model nesnesi ile ilişki kuracağımızı belirledik ve yabancı id ile birinci id tanımlaması yaptık.

Leave a Reply

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