【发布时间】:2014-05-01 01:27:12
【问题描述】:
如何删除节点的字段实例。我将此字段用于节点的文件附件。
当我使用删除的附件更新节点时,更新节点中不存在该字段,但 node_save 不会从表中删除该字段的条目。
那么是否有一些 api 可以将其从节点中删除。
谢谢,
【问题讨论】:
如何删除节点的字段实例。我将此字段用于节点的文件附件。
当我使用删除的附件更新节点时,更新节点中不存在该字段,但 node_save 不会从表中删除该字段的条目。
那么是否有一些 api 可以将其从节点中删除。
谢谢,
【问题讨论】:
删除一个字段实例意味着从给定的bundle中删除该field_name字段及其数据,这意味着每个字段field_name附加到给定的bundle 将被删除。
您不想删除所有节点附件,只删除一个。这里是如何删除特定实体($node)的文件附件字段的示例:
// Optionally : Load file object.
$filefoo = file_load($node->field_name[LANGUAGE_NONE][0][$fid]);
// Remove the field value from $node.
unset($node->field_name[LANGUAGE_NONE][0]);
// Save the entity
entity_save('node', $node);
// Optionally : safely delete the file (won't be deleted if still in use)
file_delete($filefoo);
【讨论】:
field_delete_instance() 或field_delete_field() 删除特定的节点字段。有一个误解,但我更新了我的答案,现在更清楚了。
$node->field_name 必须设置为空值,以便保存更改。