Laravel constrained() yöntemi ile Otomatik İlişkili Tablo Oluşturma

Profiles Tablosu ve Kolonları

Profiles Tablosu Migration Şeması

Schema::create('profiles', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});

Profile Pictures Tablosu ve Kolonları

Profile Pictures Tablosu Migration Şeması

Schema::create('profile_pictures', function (Blueprint $table) {
$table->id();
$table->foreignId('profile_id')->constrained()->cascadeOnDelete();
$table->string('image');
$table->timestamps();
});

Yukarıda kırmızı ile yazdığımız satır aşağıdaki işlemin aynısını yapar. Kodda yazdığımız constrained() metodu bize bunu sağlıyor. Kodun açıklaması profile pictures tablosundaki profile_id ile profile tablosundaki id alanlarını birbirine bağla demektir. constrained() yöntemi foreignId(‘profile_id‘) içinde yazan profile_id katarından yola çıkarak profiles tablosunu referans alır eğer referans almasını istediğiniz tablonuzun ismi profiles tablosundan farklı ise constrained(‘uyeler’) şeklinde uyeler tablosunu referans almasını sağlayabilirsiniz.

$table->unsignedBigInteger('profile_id');
$table->foreign('profile_id')->references('id')->on('profiles');

Ek olarak cascadeOnDelete() yöntemi, profil silindiğinde ilgili profilin resminin de silinmesini sağlıyor. Laravelde kısıtlayıcı yöntemler, sütun değiştirici yöntemlerden sonra yazılmalıdır. nullable()->constrained() gibi

Çeşitli Örnekler

$table->foreignId('profile_id')->nullable()->constrained()->cascadeOnDelete(); //nullable() ile sütunun boş olabileceği ve varsayılan olarak NULL(BOŞ) değerini almasını sağladık
$table->foreignId('profile_id')->default(1)->constrained()->cascadeOnDelete(); //default(1) ile sütunun değer almazsa varsayılan olarak 1 olması sağladık

İlgili Laravel Dökümanları

Sütun Değiştiriciler – Column Modifiers

Dış Anahtar Kısıtlamaları – Foreign Key Constraints

Bir cevap yazın: