Как правильно программно удалить одну конкретную запись поля для поля с несколькими записями из одной конкретной сущности? (это конкретные поля и конкретные объекты, а не типы полей или экземпляры и типы объектов)
Вот некоторые возможности, которые я изучил, но которые не работают:
- Загрузка объекта с помощью
entity_load()
, установка записи поля равной = null или = array (), затем сохранение сfield_attach_update()
. Это самое близкое, что я нашел, но он оставляет запись нулевого поля зомби в базе данных, которая отображается в виде пустой строки в формах до тех пор, пока форма не будет сохранена иhook_field_is_empty()
может активироваться (hook_field_is_empty()
настроена так, что = null или = array () помечает как пусто). - Загрузка объекта
entity_load()
нажатием кнопки, сброс поля ввода по ключу, а затем сохранение нажатиемfield_attach_update()
. Похоже, что это ничего не делает - кажется, что Drupal интерпретирует запись, отсутствующую там, как знак, чтобы не изменять его. (странно, я иногда получаю максимальное время ожидания истечения времени запроса при попытке такого подхода) field_attach_delete()
- это слишком тупо: оно убивает все поля для сущностиfield_purge_data()
- лучше, но все еще слишком тупо: убивает все записи поля, а не конкретные записи
Итак, чтобы уточнить, у меня есть код, который находит (и загружает) объект, который имеет поле с несколькими записями, и находит конкретную запись в этом поле, которую необходимо удалить. Я хочу полностью удалить эту запись, не касаясь каких-либо других записей или каких-либо других полей объекта.