किसी विशिष्ट इकाई से बहु-प्रविष्टि क्षेत्र के लिए एक विशिष्ट फ़ील्ड प्रविष्टि को प्रोग्रामेटिक रूप से हटाने का उचित तरीका क्या है? (यह विशिष्ट फ़ील्ड्स और विशिष्ट इकाइयाँ हैं, फ़ील्ड प्रकार या इंस्टेंस और एंटिटी प्रकार नहीं)
यहाँ कुछ संभावनाएँ हैं जिन पर मैंने काम किया है:
entity_load()
फ़ील्ड प्रविष्टि को = null या = array () में सेट करने के साथ , फिर से लोड करके इकाई को लोड करेंfield_attach_update()
। यह मेरे निकटतम पाया गया है, लेकिन यह डेटाबेस में एक ज़ोंबी अशक्त क्षेत्र प्रविष्टि छोड़ता है जो प्रपत्र को सहेजने तक रिक्त पंक्ति के रूप में दिखाता है औरhook_field_is_empty()
किक कर सकता है (hook_field_is_empty()
ऐसे कॉन्फ़िगर किया गया है कि = null या = array) जितना खाली)।- इकाई को लोड करना
entity_load()
, कुंजी द्वारा फ़ील्ड प्रविष्टि को परेशान करना, फिर बचत करनाfield_attach_update()
। यह कुछ भी नहीं करने के लिए लगता है - ऐसा लगता है कि ड्रुपल प्रविष्टि की व्याख्या करता है कि इसे संशोधित नहीं करने के संकेत के रूप में नहीं है। (अजीब तरह से मुझे भी कभी-कभी इस दृष्टिकोण की कोशिश करते समय अधिकतम क्वेरी समय समाप्ति समय समाप्ति मिलती है) field_attach_delete()
- यह बहुत अधिक कुंद है: यह इकाई के लिए सभी क्षेत्रों को मारता हैfield_purge_data()
- बेहतर, लेकिन फिर भी बहुत कुंद: यह क्षेत्र की सभी प्रविष्टियों को मारता है, विशिष्ट प्रविष्टियों को नहीं
तो स्पष्ट करने के लिए, मुझे एक कोड मिला है जो एक इकाई को ढूंढता है (और लोड करता है) जिसमें एक फ़ील्ड होती है जिसमें कई प्रविष्टियाँ होती हैं, और उस फ़ील्ड पर एक विशिष्ट प्रविष्टि पाता है जिसे निकालने की आवश्यकता होती है। मैं उस प्रविष्टि को पूरी तरह से हटा देना चाहता हूं, इकाई पर किसी भी अन्य प्रविष्टियों या किसी भी अन्य क्षेत्रों को छूने के बिना।