लारवेल में, किसी पोस्ट को हटाने का प्रयास करते समय एक दिलचस्प त्रुटि उत्पन्न हो सकती है जिसमें लाइक्स जुड़े हुए हैं। त्रुटि संदेश घोषित करता है:
"SQLSTATE[23000]: अखंडता बाधा उल्लंघन: 1451 मूल पंक्ति को हटा या अद्यतन नहीं कर सकता: एक विदेशी कुंजी बाधा विफल हो जाती है (eliapi8.पसंद, CONSTRAINT पसंद_पोस्ट_आईडी_विदेशी विदेशी कुंजी (पोस्ट_आईडी) संदर्भ पोस्ट ( आईडी))"
स्कीमा का विश्लेषण
स्कीमा की जांच करने पर, यह स्पष्ट हो जाता है कि लाइक टेबल के पोस्ट_आईडी फ़ील्ड पर एक विदेशी कुंजी बाधा मौजूद है। यह बाधा किसी पोस्ट रिकॉर्ड को हटाने से रोकती है यदि रिकॉर्ड जैसे कोई भी संबद्ध है।
पसंद तालिका की माइग्रेशन फ़ाइल में onDelete('कैस्केड') का परिचय एक समाधान प्रदान करता है। इस निर्देश का उपयोग करके, जब कोई पोस्ट रिकॉर्ड हटा दिया जाता है, तो सभी संबंधित समान रिकॉर्ड स्वचालित रूप से हटा दिए जाते हैं:
स्कीमा::बनाएं('पसंद', फ़ंक्शन (ब्लूप्रिंट $टेबल) { $table->integer('post_id')->unsigned(); $टेबल->विदेशी('पोस्ट_आईडी')->संदर्भ('आईडी')->पर('पोस्ट')->ऑनडिलीट('कैस्केड'); });समाधान 2: मॉडल संबंधों का लाभ उठाएं
यदि पोस्ट मॉडल लाइक मॉडल के साथ संबंध बनाए रखता है, तो निम्नलिखित दृष्टिकोण को नियोजित किया जा सकता है:Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
$पोस्ट->लाइक्स()->गेट() का उपयोग करके संबंधित लाइक प्राप्त करें।$पोस्ट->लाइक्स()->डिलीट() का उपयोग करके पुनर्प्राप्त लाइक्स हटाएं।
अंत में, $post->delete() का उपयोग करके पोस्ट को स्वयं हटा दें।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3