"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > संदर्भात्मक अखंडता बनाए रखते हुए लारवेल में संबंधित पंक्तियों को स्वचालित रूप से कैसे हटाएं?

संदर्भात्मक अखंडता बनाए रखते हुए लारवेल में संबंधित पंक्तियों को स्वचालित रूप से कैसे हटाएं?

2024-12-21 को प्रकाशित
ब्राउज़ करें:363

How to Automatically Delete Related Rows in Laravel While Maintaining Referential Integrity?

संदर्भात्मक अखंडता सुनिश्चित करना: लारवेल में संबंधित पंक्तियों का स्वचालित विलोपन

लारवेल के एलोक्वेंट ओआरएम में एक पंक्ति को हटाते समय, किसी को इसकी आवश्यकता का सामना करना पड़ सकता है संबंधित पंक्तियों में विलोपन को कैस्केड करें। इसे कॉलबैक के उपयोग के माध्यम से प्राप्त किया जा सकता है।

कार्यान्वयन:

मॉडल हटाने के दौरान संबंधित पंक्तियों को स्वचालित रूप से हटाने के लिए, "हटाने" ईवेंट का उपयोग करने पर विचार करें। यह ईवेंट प्राथमिक पंक्ति को हटाए जाने से पहले ट्रिगर किया जाता है, जो बाद की सफाई कार्रवाई करने का अवसर प्रदान करता है। नेमस्पेस ऐप\मॉडल; प्रमाणित करने योग्य के रूप में इल्यूमिनेट\फाउंडेशन\Auth\User का उपयोग करें; क्लास उपयोगकर्ता प्रमाणिकता बढ़ाता है { सार्वजनिक समारोह तस्वीरें() { वापसी $this->has_many('फ़ोटो'); } // संबंधित पंक्तियों को हटाने के लिए इवेंट श्रोता संरक्षित स्थैतिक फ़ंक्शन बूट किया गया () { स्थिर::हटाना(फ़ंक्शन (उपयोगकर्ता $ उपयोगकर्ता) { $user->photos()->delete(); }); } }

जब कोई "उपयोगकर्ता" मॉडल हटा दिया जाता है तो यह ईवेंट श्रोता स्वचालित रूप से सभी संबंधित "फोटो" पंक्तियों को हटा देगा।

has_many('Photo');
    }

    // Event listener to cascade delete of related rows
    protected static function booted()
    {
        static::deleting(function (User $user) {
            $user->photos()->delete();
        });
    }
}
लेनदेन प्रबंधन:

To संदर्भात्मक अखंडता बनाए रखने के लिए, लेनदेन के भीतर विलोपन प्रक्रिया को संलग्न करने की अनुशंसा की जाती है। यह सुनिश्चित करता है कि सभी डेटाबेस परिवर्तन परमाणु हैं। निम्नलिखित कोड स्निपेट इसे प्रदर्शित करता है:delete(); // सफल होने पर लेनदेन करें डीबी::प्रतिबद्ध(); } पकड़ें (\अपवाद $ई) { // यदि कोई त्रुटि होती है तो लेनदेन को रोलबैक करें डीबी::रोलबैक(); }

इन चरणों का पालन करके, आप संदर्भात्मक अखंडता और डेटा स्थिरता सुनिश्चित करते हुए, लारवेल में प्राथमिक पंक्ति को हटाते समय संबंधित पंक्तियों को स्वचालित रूप से हटा सकते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3