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

फिलामेंट: रिकॉर्ड हटाते समय अनुलग्नक हटाएं

2024-11-08 को प्रकाशित
ब्राउज़ करें:756

Filament: Delete Attachments when Deleting a Record

फिलामेंट आपको रिकॉर्ड में अनुलग्नक जोड़ने की अनुमति देता है, लेकिन जब आप रिकॉर्ड हटाते हैं तो यह उन्हें नहीं हटाता है।

इस समस्या को हल करने के लिए, हमारे पास दो विकल्प हैं:

मॉडल की डिलीटिंग घटना को सुनें

जब कोई मॉडल हटाया जाने वाला होता है, तो यह हटाने की घटना को सक्रिय कर देता है। मॉडल के अस्तित्व में न रहने से पहले किसी भी अनुलग्नक को हटाने के लिए जिम्मेदार कार्यक्षमता को ट्रिगर करने के लिए हम इस घटना को सुन सकते हैं।

मॉडल क्लास के अंदर हम नए इवेंट श्रोताओं को मॉडल में पंजीकृत करने के लिए बूट की गई विधि जोड़ सकते हैं।

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

आप उस विकल्प का उपयोग कर सकते हैं जो आपकी आवश्यकताओं के लिए बेहतर है, लेकिन आपको यह ध्यान रखना चाहिए कि जब आपका मॉडल हटा दिया जाता है, तो एक ईवेंट श्रोता जोड़ने से अनुलग्नक हटा दिया जाएगा, जब भी आपके ऐप में फिलामेंट एक्शन या कोड के किसी अन्य भाग से घटित हुआ हो।

यह महत्वपूर्ण है क्योंकि संभवत: यह निर्धारित करेगा कि आपको कब विकल्प चुनना चाहिए।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/sertxudev/filament-delete-attachments-when-deleting-a-record-1jhl?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3