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!