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

DDD
Lepaskan: 2024-10-26 11:22:02
asal
705 orang telah melayarinya

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');
});
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!