是否有可能在drupal 7中更新(覆盖)页面内容的节点ID?

时间:2014-05-19 10:43:38

标签: drupal drupal-7

我正在从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();
    .......
    .......
  }
}

1 个答案:

答案 0 :(得分:0)

如果节点表为空,则可能。

我认为人们会在这个问题上使用UUID。