yusufc
public function up()
{
Schema::create('blog_category', function (Blueprint $table) {
$table->id();
$table->foreignId('category_id')->constrained()->cascadeOnDelete();
$table->foreignId('blog_id')->constrained()->cascadeOnDelete();
$table->timestamps();
});
}
Bu şekilde yazmanız yeterlidir. Constrained() diğerlerini hallediyor.
Tekrar category_id, blog_id diye tanımlamanıza gerek yok.
Burada yapılan cascadeOnDelete() işlemi veritabanı düzeyindedir.
Siz Laravel'de Elequent özelliği ile silme yaptığınızda zaten Elequent o işlemi yapacaktır.
Bunu bir yedek güvenlik gibi düşünebilirsiniz. Herhangi siz bir blog yazısını sildiniz, herhangi bir nedenle bu Elequent içerisinde gerçekleşmedi, o zaman veritabanınız otomatik olarak bu işlemi yapacaktır.
Şu kısmı net hatırlamıyorum ama verdiğiniz örnekten gidersek;
$blog=Blog::find($id);
$blog->categories()->detach(); // bu satırı yazmadığınızda migration dosyasındaki cascadeOnDelete devreye girecek
$blog->delete();