फिलामेंट आपको रिकॉर्ड में अनुलग्नक जोड़ने की अनुमति देता है, लेकिन जब आप रिकॉर्ड हटाते हैं तो यह उन्हें नहीं हटाता है।
इस समस्या को हल करने के लिए, हमारे पास दो विकल्प हैं:
जब कोई मॉडल हटाया जाने वाला होता है, तो यह हटाने की घटना को सक्रिय कर देता है। मॉडल के अस्तित्व में न रहने से पहले किसी भी अनुलग्नक को हटाने के लिए जिम्मेदार कार्यक्षमता को ट्रिगर करने के लिए हम इस घटना को सुन सकते हैं।
मॉडल क्लास के अंदर हम नए इवेंट श्रोताओं को मॉडल में पंजीकृत करने के लिए बूट की गई विधि जोड़ सकते हैं।
class Project extends Model { protected $fillable = [ 'title', 'slug', 'repository', 'description', 'thumbnail', ]; /** * The "booted" method of the model. */ protected static function booted(): void { static::deleting(function ($project) { Storage::disk('public')->delete($project->thumbnail); }); } }
यह कोड मॉडल को हटाने से पहले थंबनेल अटैचमेंट को हटा देगा।
आप इसके बारे में लारवेल दस्तावेज़ https://laravel.com/docs/11.x/eloquent#events-using-closures
में अधिक पढ़ सकते हैं।दूसरा विकल्प डिलीट एक्शन के व्यवहार को बदलना है।
protected function getActions(): array { return [ Actions\DeleteAction::make() ->after(function (Project $project) { // delete single if ($project->thumbnail) { Storage::disk('public')->delete($project->thumbnail); } }) ]; }
आप उस विकल्प का उपयोग कर सकते हैं जो आपकी आवश्यकताओं के लिए बेहतर है, लेकिन आपको यह ध्यान रखना चाहिए कि जब आपका मॉडल हटा दिया जाता है, तो एक ईवेंट श्रोता जोड़ने से अनुलग्नक हटा दिया जाएगा, जब भी आपके ऐप में फिलामेंट एक्शन या कोड के किसी अन्य भाग से घटित हुआ हो।
यह महत्वपूर्ण है क्योंकि संभवत: यह निर्धारित करेगा कि आपको कब विकल्प चुनना चाहिए।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3