以编程方式从一个特定实体中删除多条目字段的一个特定字段条目的正确方法是什么?(这是特定的字段和特定的实体,不是字段类型或实例和实体类型)
这是我研究过的一些不起作用的可能性:
- 使用加载实体
entity_load()
,将字段条目设置为= null或= array(),然后使用保存field_attach_update()
。这是我找到的最接近的,但它在数据库中留下了一个僵尸null字段条目,该条目在表单上显示为空白行,直到保存表单并hook_field_is_empty()
可以将其踢入为止(hook_field_is_empty()
配置为= null或= array()将进行标记为空)。 - 用加载实体
entity_load()
,通过键取消设置字段条目,然后用保存field_attach_update()
。这似乎无济于事-似乎Drupal将该条目解释为不修改该条目的标志。(奇怪的是,有时我在尝试这种方法时有时也会得到最大查询时间过期超时) field_attach_delete()
-这太直率了:它会杀死实体的所有字段field_purge_data()
-更好,但仍然太钝:它会杀死该字段的所有条目,而不是特定条目
因此,为澄清起见,我有代码来查找(并加载)一个实体,该实体的字段具有多个条目,并在该字段上找到需要删除的特定条目。我想完全删除该条目,而无需触摸实体上的任何其他条目或任何其他字段。