Drupal 8-节点引用迁移到实体引用类型

时间:2019-07-18 20:15:25

标签: drupal migration drupal-8 migrate

我尝试按照此步骤https://www.drupal.org/docs/8/upgrade/upgrading-from-drupal-6-or-7-to-drupal-8将drupal 7网站迁移到版本8。但是,当迁移内容类型的字段时,在引用其他内容类型的字段中出现“尝试创建没有类型的[field_name]的错误”。 “ upgrade_d7_field”是我执行的迁移ID。我正在通过匆忙进行迁移。

我知道可能的问题,但我不知道如何解决。在drupal 7中,引用其他内容类型的字段类型为“节点引用”类型,但是在版本8中,该类型不再存在,现在为“实体引用”类型。

我认为我应该在迁移定义中更改一些配置,但我不知道到底是什么。

这是迁移ID“ upgrade_d7_field”的迁移定义:

uuid: 2edaccb2-22a6-4482-895f-439bbbc66f1a
langcode: es
status: true
dependencies: {  }
id: upgrade_d7_field
class: Drupal\migrate_drupal\Plugin\migrate\FieldMigration
field_plugin_method: alterFieldMigration
cck_plugin_method: null
migration_tags:
  - 'Drupal 7'
  - Configuration
migration_group: migrate_drupal_7
label: 'Field configuration'
source:
  plugin: d7_field
  constants:
    status: true
    langcode: und
process:
  entity_type:
    -
      plugin: get
      source: entity_type
  status:
    -
      plugin: get
      source: constants/status
  langcode:
    -
      plugin: get
      source: constants/langcode
  field_name:
    -
      plugin: get
      source: field_name
  type:
    -
      plugin: process_field
      source: type
      method: getFieldType
      map:
        d7_text:
          d7_text: d7_text
        taxonomy_term_reference:
          taxonomy_term_reference: taxonomy_term_reference
        image:
          image: image
        link_field:
          link_field: link_field
        file:
          file: file
        datetime:
          datetime: datetime
        list:
          list: list
  cardinality:
    -
      plugin: get
      source: cardinality
  settings:
    -
      plugin: d7_field_settings
destination:
  plugin: 'entity:field_storage_config'
migration_dependencies:
  required: {  }
  optional: {  }


严重的是,我需要迁移D7站点的数据,它们是有关分类法,注释等的17.000多个新闻。

感谢您的帮助。预先感谢。

2 个答案:

答案 0 :(得分:1)

似乎您正在使用References模块,该模块提供了旧CCK软件包中node_referenceuser_reference字段类型的D7版本。

此模块是在drupal 7早期启用这些字段类型的解决方案。

一段时间之后,Entity Reference出现在d7中,它提供了一个通用字段类型来引用任意实体,并且此后就被包含在Drupal 8内核中。

要解决您的问题,您应该首先将参考字段迁移到正确的字段类型entity_reference中。

有一个名为Reference to EntityReference Field Migration的模块,可以帮助您在drupal 8迁移之前完成工作。

答案 1 :(得分:1)

让我们假设d7字段位于名为publications的内容类型上,并且该字段为 field_articles_d7 引用了名为articles的内容类型,而新的D8实体引用字段为称为 field_articles_d8 (假设它位于名为publications的同一内容类型上),还引用了名为articles

的内容类型

顺序应为

  • 迁移article内容类型(迁移ID:d7_node_article)
  • 然后迁移publications节点类型(迁移ID:d7_node_publication)
    • 在过程部分中,您需要执行此操作
      •         field_articles_d8:
                    plugin: migration_lookup
                    migration: d7_node_article
                    source: field_articles_d7
        
        

这通常是将Drupal 7中的Node引用迁移到Drupal 8中的实体引用的顺序过程。