我正在从drupal 6迁移到drupal 7.但是,我成功迁移了所有页面内容,我想保留与之前版本相同的nodeid。
以下代码完成了它。但我需要更新每一张桌子。即使它有效,我想确认是否有任何功能可用于执行此过程。像node_update?
示例:迁移后我想将页面的节点ID从123更新为12.因此它应该更新节点id 123被引用到12的所有表。
public function postImport() {
$original_node_data = Database::getConnection('default', 'legacy')
->select('node', 'nd')
->fields('nd', array('nid', 'type', 'title'))
->execute()
->fetchAll();
foreach ($original_node_data as $ori_nd_dta) {
$ori_nd_id = $ori_nd_dta->nid;
$oti_nd_title = $ori_nd_dta->title;
$duplicate_node_data = Database::getConnection('default', 'default')
->select('node', 'nd')
->fields('nd', array('nid', 'title'))
->condition('title', $oti_nd_title)
->execute()
->fetchAll();
foreach ($duplicate_node_data as $dup_data) {
$dup_nd_id = $dup_data->nid;
}
$update_node = db_update('node')
->fields(array('nid' => $ori_nd_id))
->condition('nid', $dup_nd_id)
->execute();
$update_node_rev = db_update('node_revision')
->fields(array('nid' => $ori_nd_id))
->condition('nid', $dup_nd_id)
->execute();
.......
.......
}
}
答案 0 :(得分:0)
如果节点表为空,则可能。
我认为人们会在这个问题上使用UUID。