একটি নির্দিষ্ট সত্তা থেকে বহু-এন্ট্রি ক্ষেত্রের জন্য একটি নির্দিষ্ট ক্ষেত্রের এন্ট্রি প্রোগ্রামগতভাবে মোছার সঠিক উপায় কী? (এটি নির্দিষ্ট ক্ষেত্র এবং নির্দিষ্ট সত্তা, ক্ষেত্রের ধরণ বা উদাহরণ এবং সত্তার প্রকার নয়)
এখানে কিছু সম্ভাবনা যা আমি দেখেছি সেগুলি কার্যকর হয় না:
- এর সাথে সত্তাটি লোড করা হচ্ছে
entity_load()
, ফিল্ড এন্ট্রিটিকে = নাল বা = অ্যারে () এ সেট করে, তারপরে সংরক্ষণ করাfield_attach_update()
। এটি আমার সর্বাধিক সন্ধান পাওয়া গেছে তবে এটি ডাটাবেসে একটি জম্বি নাল ফিল্ড এন্ট্রি ছেড়ে দেয় যা ফর্মটি সংরক্ষণ না হওয়া অবধি ফর্মগুলির মধ্যে ফাঁকা সারি হিসাবে প্রদর্শিত হয় এবংhook_field_is_empty()
কিক করতে পারে (এমনটিhook_field_is_empty()
কনফিগার করা হয় যে = নাল বা = অ্যারে () কনফিগার করা হবে খালি হিসাবে)। - এর সাথে সত্তাটি লোড করা হচ্ছে
entity_load()
, কী দ্বারা ক্ষেত্রের এন্ট্রিটি সেট না করা, তারপরে সংরক্ষণ করাfield_attach_update()
। এটি কিছুই করতে পারে না বলে মনে হচ্ছে - দ্রুপাল এন্ট্রিটিকে সংশোধন না করার জন্য সেখানে উপস্থিত থাকার ব্যাখ্যা দিচ্ছে না। (আশ্চর্যজনকভাবে আমি কখনও কখনও এই পদ্ধতির চেষ্টা করার সময় সর্বাধিক ক্যোয়ারির সময়সীমা শেষ করার সময়ও পাই) field_attach_delete()
- এটি অনেক বেশি কট্টর: এটি সত্তার জন্য সমস্ত ক্ষেত্রকে হত্যা করেfield_purge_data()
- ভাল, তবে এখনও খুব ভোঁতা: এটি ক্ষেত্রের সমস্ত এন্ট্রিগুলিকে হত্যা করে, নির্দিষ্ট এন্ট্রিগুলিকে নয়
সুতরাং স্পষ্ট করার জন্য, আমি এমন একটি কোড পেয়েছি যা একটি সত্তা খুঁজে পায় (এবং লোড করে) এমন এক ক্ষেত্র যার একাধিক এন্ট্রি রয়েছে এবং সেই ক্ষেত্রটিতে একটি সুনির্দিষ্ট এন্ট্রি পেয়েছে যা অপসারণ করা দরকার। সত্তার কোনও অন্য এন্ট্রি বা অন্য কোনও ক্ষেত্র স্পর্শ না করে আমি সেই প্রবেশটি সম্পূর্ণরূপে সরাতে চাই।