Laravel Veri Tabanı İlişkileri

Yasin DALKILIÇ
2 min readAug 13, 2020

--

Herkese merhabalar, Laravel kullanırken ( Eloquent: Relationships https://laravel.com/docs/7.x/eloquent-relationships) başlığı altında kullandığımız ilişkileri resmi sayfalarındaki örneklerle beraber sizlere anlatmaya çalışacağım.

One to One İlişki Türü

Bu ilişki türü bire-bir ilişki türüdür. Örneğin bir kullanıcının yalnızca bir detayı vardır ve bir detayında yalnızca bir kullanıcısı vardır.

User Modeli;

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

public function detail()
{
return $this->hasOne('App\UserDetail');
}
}

UserDetail Modeli;

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class UserDetail extends Model
{

public function user()
{
return $this->belongsTo('App\User');
}
}

Kullanım Şekli;

$detail = User::find(1)->detail;

Örnekte bir numaralı kullanıcı bulunup kullanıcının detay bilgileri getirilmektedir.

One to Many İlişki Türü

Bu ilişki türü bire-çok ilişki türüdür.Örneğin bir gönderinin altında birden fazla yorum olabilir.

Post Modeli;

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
public function comments()
{
return $this->hasMany('App\Comment');
}
}

Comment Modeli;

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
public function post()
{
return $this->belongsTo('App\Post');
}
}

Kullanım Şekli Gönderi Üzerinden Yorumlara Erişmek İçin;

$comments = App\Post::find(1)->comments;

Örnekte bir numaralı gönderiye ait yorumların bulunup getirilmesi.

Kullanım Şekli Yorumlar Üzerinden Gönderiye Erişmek İçin;

$comment = App\Comment::find(1);

echo $comment->post->title;

Örnekte bir numaralı yorum bulunup, bulunan yoruma ait gönderideki başlık bilgisi yazdırılmaktadır.

Many to Many İlişki Türü

Bu ilişki türü çoka-çok ilişki türüdür.Örneğin bir kullanıcının birden fazla rolü olabilir, ve aynı role sahip birden fazla kullanıcı olabilir.

Tablo Structure(Tablo Yapısı);

users
id - integer
name - string

roles
id - integer
name - string

role_user
user_id - integer
role_id - integer

User Modeli;

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
public function roles()
{
return $this->belongsToMany('App\Role');
}
}

Role Modeli;

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
public function users()
{
return $this->belongsToMany('App\User');
}
}

Kullanıcının Üzerinden Rollerine Erişmek İçin;

$user = App\User::find(1);

foreach ($user->roles as $role) {
//
}

Örnekte bir numaralı kullanıcı bulunup, kullanıcıya ait rollerin listesi getirilmektedir.

Roller Üzerinden Kullanıcılara Erişmek İçin;

$role = App\User::find(1);

foreach ($role->users as $user) {
//
}

Örnekte bir numaralı rol bulunup, bir numaralı role sahip kullanıcıların listesi getirilmektedir.

Herkese İyi Çalışmalar Dilerim. :)

--

--

Yasin DALKILIÇ
Yasin DALKILIÇ

Written by Yasin DALKILIÇ

Hi, My name is Yasin I am a Software Developer, I love so much researching and development 😊 Here is my youtube channel @webciyasin

No responses yet