Apa cara yang tepat untuk secara terprogram menghapus satu entri bidang tertentu untuk bidang multi-entri dari satu entitas tertentu? (itu bidang khusus dan entitas spesifik, bukan tipe bidang atau instance dan tipe entitas)
Berikut adalah beberapa kemungkinan yang saya perhatikan yang tidak berhasil:
- Memuat entitas dengan
entity_load()
, mengatur entri bidang ke = null atau = array (), lalu menyimpan denganfield_attach_update()
. Ini yang paling dekat yang saya temukan tetapi meninggalkan entri bidang nol zombie di database yang muncul sebagai baris kosong pada formulir sampai formulir disimpan danhook_field_is_empty()
dapat menendang (hook_field_is_empty()
dikonfigurasi sehingga = null atau = array () akan menandai kosong). - Memuat entitas dengan
entity_load()
, membuka kunci entri bidang dengan kunci, lalu menyimpan denganfield_attach_update()
. Ini sepertinya tidak melakukan apa-apa - tampaknya Drupal menginterpretasikan entri yang tidak ada di sana sebagai tanda untuk tidak memodifikasinya. (Anehnya, saya juga terkadang mendapatkan batas waktu kedaluwarsa waktu permintaan maksimum saat mencoba pendekatan ini) field_attach_delete()
- ini terlalu tumpul: ini membunuh semua bidang untuk entitasfield_purge_data()
- lebih baik, tetapi masih terlalu tumpul: itu membunuh semua entri bidang, bukan entri tertentu
Jadi untuk memperjelas, saya punya kode yang menemukan (dan memuat) entitas yang memiliki bidang yang memiliki banyak entri, dan menemukan entri khusus pada bidang itu yang perlu dihapus. Saya ingin menghapus entri itu sepenuhnya, tanpa menyentuh entri lain atau bidang lain pada entitas.