Laravel Veri Tabanı İlişkileri
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. :)