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ı