วิธีใดที่เหมาะสมในการลบรายการฟิลด์หนึ่งรายการสำหรับฟิลด์หลายรายการโดยทางโปรแกรม (นั่นคือฟิลด์เฉพาะและเอนทิตีเฉพาะไม่ใช่ประเภทฟิลด์หรืออินสแตนซ์และประเภทเอนทิตี)
นี่คือความเป็นไปได้บางอย่างที่ฉันได้พิจารณาแล้วว่าไม่ได้ผล:
- โหลดนิติบุคคลที่มี
entity_load()
การตั้งค่ารายการสนาม = โมฆะหรือ = array ()field_attach_update()
แล้วประหยัด มันเป็นเรื่องที่ใกล้เคียงที่สุดที่ฉันได้พบ แต่ใบรายการฟิลด์ผีดิบ null ในฐานข้อมูลซึ่งแสดงให้เห็นถึงเป็นแถวว่างเปล่าในรูปแบบจนกว่าฟอร์มถูกบันทึกไว้และhook_field_is_empty()
สามารถเตะใน (hook_field_is_empty()
มีการกำหนดค่าดังกล่าวว่า = โมฆะหรือ = array () จะธง ว่างเปล่า) - โหลดนิติบุคคลที่มี
entity_load()
, unsettingfield_attach_update()
รายการข้อมูลโดยคีย์แล้วประหยัด ดูเหมือนว่าจะไม่ทำอะไรเลย - ดูเหมือนว่า Drupal จะตีความรายการที่ไม่ได้มีไว้เป็นสัญญาณเพื่อไม่แก้ไข (แปลกบางครั้งฉันยังได้รับเวลาหมดเวลาสอบถามสูงสุดเมื่อลองวิธีนี้) field_attach_delete()
- นี่มันทื่อมากเกินไป: มันฆ่าทุกฟิลด์สำหรับเอนทิตีfield_purge_data()
- ดีกว่า แต่ก็ยังทื่อเกินไป: มันฆ่ารายการทั้งหมดของฟิลด์ไม่ใช่เฉพาะรายการ
เพื่อชี้แจงฉันได้รับรหัสที่พบ (และโหลด) เอนทิตีที่มีฟิลด์ที่มีหลายรายการและค้นหารายการเฉพาะในฟิลด์นั้นที่จำเป็นต้องลบออก ฉันต้องการลบรายการนั้นอย่างสมบูรณ์โดยไม่ต้องแตะรายการอื่นใดหรือฟิลด์อื่น ๆ ในเอนทิตี