php – Drupal – 如何以编程方式更新CCK NodeReference字段?
我正在尝试创建一个节点(B型)&使用node_save()方法将其分配给A类型节点的CCK节点参考字段.
$node_type_A = node_load($some_nid); $node_type_A->field_type_B_node_ref[]['nid'] = $node_type_B_nid; $node_type_A = node_submit($node_type_A); node_save($node_type_A); 结果,将创建一个新的B类型节点,但不会为A类型节点分配任何引用.任何帮助,将不胜感激.
GApple是对的,格式是正确的,但有几件事你可能想要关心.
达美价值 GApple再次正确,你必须确切地说在哪里添加新的参考.获得该delta值后,您可以准确地说出新引用的附加位置(delta 1).这里是: function get_current_delta($node_vid){ return db_result(db_query("SELECT delta FROM {content_field_type_A_node_ref} WHERE vid = '%d' ORDER BY delta DESC LIMIT 1",$node_vid)); } 添加新引用 // Loading type_A node. $node_type_A = node_load($some_nid); // Getting current delta value. $current_delta = get_current_delta($node_type_A->vid); // "Appending" a node reference based on delta. $node_type_A->field_type_B_node_ref += array($current_delta + 1 => array('nid' => $node_type_B_nid)); 重新保存更新的节点 // Resaving the updated node. $node_type_A = node_submit($node_type_A); node_save($node_type_A); content_insert($node_type_A); 刷新内容缓存 db_query("DELETE FROM {cache_content} WHERE cid = '%s'",'content:' . $node_type_A->nid . ':' . $node_type_A->vid); 希望能帮助到你 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |