DEV Community

Barış Bideratan
Barış Bideratan

Posted on

Laravel'de Pivot Tablo Oluşturma Rehberi

Laravel, güçlü ve esnek bir framework olup, veri tabanı ilişkileri konusunda oldukça kullanışlı araçlar sunar. Bu rehberde, pivot tabloları anlamaya ve Laravel'de nasıl kullanılacağını öğrenmeye odaklanacağız.

Pivot Tablo Nedir?

Pivot tablolar, birçokdan çoğa (many-to-many) ilişkilerini temsil eden yardımcı tablolardır. Örneğin, users ve roles tabloları arasında birçokdan çoğa bir ilişki varsa, pivot tablo bu iki tablo arasındaki bağlantıyı sağlar.

Bir örnekle açıklayalım: Bir kullanıcı (user) birden fazla role sahip olabilir ve bir rol birden fazla kullanıcıya atanabilir. Bu tür bir ilişkiyi yönetmek için pivot tablo kullanırız.

Pivot Tablo Ne Zaman ve Ne Amaçla Kullanılır?

Pivot tablolar, aşağıdaki durumlarda kullanılır:

  • Çoktan Çoğa İlişkiler: Bir tablo satırının başka bir tablo satırıyla birden çok ilişkisi varsa kullanılır. Örneğin, users ve roles tabloları.
  • Orta Tablolar: İki tablo arasındaki ek bilgileri saklamak için kullanılır. Örneğin, bir kullanıcı bir rolü ne zaman aldığı gibi ekstra bilgileri saklamak.

Laravel'de Pivot Tablo Oluşturmanın Kuralları ve İsimlendirme

Pivot tablo oluştururken dikkat edilmesi gereken bazı kurallar ve isimlendirme standartları vardır:

  1. Pivot Tablonun Adı: Laravel, pivot tablo adını oluştururken iki tablo adını alfabetik sıraya göre birleştirir. Örneğin, users ve roles tablosu için pivot tablo adı role_user olur.
  2. Pivot Tablonun Sütunları: Pivot tablo genellikle iki yabancı anahtar içerir. Bu anahtarlar ilgili tablolara referans verir. Örneğin, role_user tablosu user_id ve role_id sütunlarını içerir.

Adım Adım Laravel'de Pivot Tablo Oluşturma

1. Adım: Modelleri ve İlişkileri Tanımlama

Öncelikle, User ve Role modellerini tanımlayalım ve ilişkileri belirtelim:

// User.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

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

// Role.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class);
    }
}
Enter fullscreen mode Exit fullscreen mode
2. Adım: Pivot Tabloyu Oluşturma

Artık pivot tablomuzu oluşturabiliriz. Bunun için bir migration dosyası oluşturacağız:

php artisan make:migration create_role_user_table --create=role_user
Enter fullscreen mode Exit fullscreen mode

Bu komut, database/migrations klasöründe bir migration dosyası oluşturur. Bu dosyayı açalım ve pivot tablo yapısını tanımlayalım:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateRoleUserTable extends Migration
{
    public function up()
    {
        Schema::create('role_user', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained()->onDelete('cascade');
            $table->foreignId('role_id')->constrained()->onDelete('cascade');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('role_user');
    }
}
Enter fullscreen mode Exit fullscreen mode
3. Adım: Migration'ı Çalıştırma

Pivot tabloyu oluşturmak için migration dosyasını çalıştırmamız gerekiyor:

php artisan migrate
Enter fullscreen mode Exit fullscreen mode

Bu komut, pivot tabloyu veri tabanında oluşturur.

4. Adım: Pivot Tablo Kullanımı

Pivot tabloyu kullanarak veri ekleyebilir, güncelleyebilir ve silebiliriz. İşte birkaç örnek:

// Rolü bir kullanıcıya atama
$user = User::find(1);
$role = Role::find(1);
$user->roles()->attach($role->id);

// Kullanıcıdan rolü kaldırma
$user->roles()->detach($role->id);

// Kullanıcıya birden fazla rol atama
$user->roles()->attach([2, 3, 4]);

// Pivot tablo üzerinden ek bilgi ekleme
$user->roles()->attach($role->id, ['assigned_at' => now()]);
Enter fullscreen mode Exit fullscreen mode

Sonuç

Pivot tablolar, birçokdan çoğa ilişkileri yönetmenin en etkili yoludur. Laravel, bu süreci kolaylaştıran birçok araç ve özellik sunar. Bu rehberde, pivot tabloların ne olduğunu, ne zaman ve nasıl kullanıldığını öğrendik. Ayrıca Laravel'de pivot tablo oluşturmayı ve kullanmayı adım adım inceledik. Umarım bu yazı, pivot tabloları kullanmanızda size yardımcı olur.

Top comments (0)