Bagaimana untuk Menyelesaikan Ralat \'Tidak Boleh Padam atau Kemas Kini Baris Induk: Kekangan Kunci Asing\' dalam Laravel?

Patricia Arquette
Lepaskan: 2024-10-25 11:37:02
asal
681 orang telah melayarinya

How to Solve

Ralat Laravel: "Tidak Boleh Padam atau Kemas Kini Baris Induk: Kekangan Kunci Asing Gagal"

Dalam Laravel, ralat yang menarik boleh timbul apabila cuba memadamkan siaran yang mengaitkan suka. Mesej ralat menyatakan:

"SQLSTATE[23000]: Pelanggaran kekangan integriti: 1451 Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal (eliapi8.likes, CONSTRAINT likes_post_id_foreign post_id_id) REFERENCES (postingan_id_ID) ASING id))"

Menganalisis Skema

Setelah meneliti skema, ternyata bahawa kekangan kunci asing wujud pada medan post_id jadual suka. Kekangan ini menghalang pemadaman rekod siaran jika terdapat sebarang rekod seperti yang dikaitkan.

Penyelesaian Cadangan

Penyelesaian 1: Gunakan onDelete('cascade')

Memperkenalkan onDelete('cascade') dalam fail migrasi jadual suka menyediakan penyelesaian. Dengan menggunakan arahan ini, apabila rekod siaran dipadamkan, semua rekod seperti yang sepadan akan dialih keluar secara automatik:

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

Penyelesaian 2: Leverage Model Hubungan

Jika Siaran model mengekalkan hubungan dengan model Suka, pendekatan berikut boleh digunakan:

  1. Ambil suka yang berkaitan menggunakan $post->likes()->get().
  2. Padamkan suka yang diambil menggunakan $post->likes()->delete().
  3. Akhir sekali, padamkan siaran itu sendiri menggunakan $post->delete().

Dengan menggunakan salah satu daripada penyelesaian ini, ralat bermasalah boleh diselesaikan, membenarkan siaran dipadamkan tanpa mengira status suka mereka.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Tidak Boleh Padam atau Kemas Kini Baris Induk: Kekangan Kunci Asing\' dalam Laravel?. 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
Artikel terbaru oleh pengarang
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!