Drupal 7 Drupal 7节点\u保存完整性约束冲突
我必须从myModule中的自定义代码中更新一些nodereference字段。这必须在插入特定类型的新节点时完成,因此我实现了hook_node_insert,如下所示:Drupal 7 Drupal 7节点\u保存完整性约束冲突,drupal-7,save,constraints,nodes,unique-constraint,Drupal 7,Save,Constraints,Nodes,Unique Constraint,我必须从myModule中的自定义代码中更新一些nodereference字段。这必须在插入特定类型的新节点时完成,因此我实现了hook_node_insert,如下所示: function myModule_node_insert($node){ $settings = _settings_forms_nodereference_fields($node->type); $field = $settings['field']; $language = field_
function myModule_node_insert($node){
$settings = _settings_forms_nodereference_fields($node->type);
$field = $settings['field'];
$language = field_language('node', $node, 'body');
$node->{$field}[$language][0]['nid'] = 408;
$node->{$field}[$language][1]['nid'] = 408;
$node->{$field}[$language][2]['nid'] = 408;
node_save($node);
}
[field_event_form_s_] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 261
)
[1] => Array
(
[nid] => 262
)
[2] => Array
(
[nid] => 263
)
)
)
但是,每次尝试创建新节点时,都会出现以下错误:
PDOException:SQLSTATE[23000]:完整性约束冲突:1062键“PRIMARY”的重复条目“436”:插入到{node}(nid、vid、类型、语言、标题、uid、状态、创建、更改、注释、升级、粘贴、tnid、翻译)值中
我发现这是因为node_save函数,但没有它,我的更改不会提交
完整数组如下所示:
function myModule_node_insert($node){
$settings = _settings_forms_nodereference_fields($node->type);
$field = $settings['field'];
$language = field_language('node', $node, 'body');
$node->{$field}[$language][0]['nid'] = 408;
$node->{$field}[$language][1]['nid'] = 408;
$node->{$field}[$language][2]['nid'] = 408;
node_save($node);
}
[field_event_form_s_] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 261
)
[1] => Array
(
[nid] => 262
)
[2] => Array
(
[nid] => 263
)
)
)
我在下一次谷歌搜索中发帖后立即找到了问题的答案。我认为它对其他人有用,包括我自己 下面的代码实现了这一点:
function myModule_node_insert($node){
$settings = _settings_forms_nodereference_fields($node->type);
$field = $settings['field'];
$language = field_language('node', $node, 'body');
$node->{$field}[$language][0]['nid'] = 408;
$node->{$field}[$language][1]['nid'] = 408;
$node->{$field}[$language][2]['nid'] = 408;
field_attach_update('node', $node);
}
需要更新字段本身,而不是保存节点。盖伊在解释的时候做得更好,同时保持简单