myModuleのカスタムコードからいくつかのノード参照フィールドを更新する必要があります。これは、特定のタイプの新しいノードが挿入されるときに実行する必要があるため、次のようにhook_node_insertを実装しました。
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);
}
ただし、新しいノードを作成しようとするたびに、次のエラーが発生します。
PDOException:SQLSTATE [23000]:整合性制約違反:1062キー'PRIMARY'の重複エントリ'436':INSERT INTO {node}(nid、vid、type、language、title、uid、status、created、changed、comment、promote 、sticky、tnid、translate)VALUES...。
node_save関数が原因であることがわかりましたが、それがないと変更はコミットされません。
完全な配列は次のとおりです。
[field_event_form_s_] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 261
)
[1] => Array
(
[nid] => 262
)
[2] => Array
(
[nid] => 263
)
)
)