Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat \'Tidak Boleh Padam atau Kemas Kini Baris Induk: Kekangan Kunci Asing\' dalam Laravel?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-25 11:37:02812semak imbas

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');
});

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!

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