Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Mengendalikan Isu Kekangan Utama Asing Apabila Memadam Siaran dengan Suka Berkaitan?

Bagaimana Mengendalikan Isu Kekangan Utama Asing Apabila Memadam Siaran dengan Suka Berkaitan?

DDD
DDDasal
2024-10-26 11:22:02706semak imbas

How to Handle Foreign Key Constraint Issues When Deleting Posts with Associated Likes?

Tidak Dapat Memadam atau Mengemas kini Siaran dengan Isu Kekangan Utama Asing

Soalan ini timbul apabila cuba memadamkan siaran yang mengaitkan suka, mengakibatkan ralat: "SQLSTATE[23000]: Pelanggaran kekangan integriti: 1451 Tidak boleh memadam atau mengemas kini baris induk..."

Punca Isu

Punca Isu dengan syarat Skema Pos dan Suka mewujudkan kekangan kunci asing antara kedua-dua jadual, di mana post_id dalam jadual Suka merujuk id dalam jadual Catatan. Apabila siaran dengan suka dipautkan dipadamkan, ia melanggar kekangan ini, kerana memadamkan siaran itu akan meninggalkan suka yatim piatu dalam jadual Suka.

Pilihan Penyelesaian 1: onDelete('cascade')

Satu penyelesaian ialah menggunakan onDelete('cascade') dalam fail migrasi Suka. Ini menentukan bahawa apabila rekod dipadamkan daripada jadual Catatan, semua rekod yang sepadan dalam jadual Suka harus dipadamkan juga.

Schema::create('likes', function (Blueprint $table) {
    $table->integer('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});

Pilihan Penyelesaian 2: Memadam Rekod Berkaitan

Sebagai alternatif, jika anda telah menentukan perhubungan daripada model Siaran kepada model Suka, anda boleh memadamkan suka yang berkaitan sebelum memadamkan siaran itu sendiri:

$post->likes()->delete();
$post->delete();

Dengan melaksanakan salah satu daripada penyelesaian ini, anda boleh menyelesaikan ralat kekangan kunci asing dan berjaya memadamkan siaran dengan suka yang berkaitan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Isu Kekangan Utama Asing Apabila Memadam Siaran dengan Suka Berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn