"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل خطأ \"لا يمكن حذف أو تحديث الصف الأصلي: فشل قيد المفتاح الخارجي\" في Laravel؟

كيفية حل خطأ \"لا يمكن حذف أو تحديث الصف الأصلي: فشل قيد المفتاح الخارجي\" في Laravel؟

تم النشر بتاريخ 2024-11-10
تصفح:329

How to Solve \

خطأ Laravel: "لا يمكن حذف أو تحديث الصف الأصلي: فشل قيد المفتاح الخارجي"

في Laravel، يمكن أن يظهر خطأ مثير للاهتمام عند محاولة حذف منشور التي لديها الإعجابات المرتبطة. تعلن رسالة الخطأ:

"SQLSTATE[23000]: انتهاك قيد التكامل: 1451 لا يمكن حذف أو تحديث صف أصل: فشل قيد المفتاح الخارجي (eliapi8.likes، CONSTRAINT likes_post_id_foreign FOREIGN KEY (post_id) مراجع المشاركات (id))"

تحليل المخططعند فحص المخطط، يصبح من الواضح وجود قيد مفتاح خارجي في حقل post_id الخاص بجدول الإعجابات. يمنع هذا القيد حذف سجل النشر إذا كان هناك أي سجلات مرتبطة به.

الحلول المقترحة

الحل 1: الاستفادة من onDelete('cascade')

تقديم onDelete('cascade') في ملف ترحيل جدول الإعجابات يوفر حلاً. باستخدام هذا التوجيه، عندما يتم حذف سجل منشور، تتم إزالة جميع السجلات المشابهة تلقائيًا:

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

Schema::create('likes', function (Blueprint $table) {
    $table->integer('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});
الحل 2: الاستفادة من علاقات النماذج

إذا احتفظ نموذج النشر بعلاقة مع نموذج الإعجاب، فيمكن استخدام النهج التالي:

جلب الإعجابات المرتبطة باستخدام $post->likes()->get().
  1. حذف الإعجابات المستردة باستخدام $post->likes()->delete().
  2. أخيرًا، احذف المنشور نفسه باستخدام $post->delete().
  3. من خلال اعتماد أي من هذه الحلول، يمكن حل الخطأ الإشكالي، مما يسمح بحذف المشاركات بغض النظر عن حالة الإعجاب الخاصة بها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3