首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移依赖实体

迁移依赖实体
EN

Drupal用户
提问于 2017-05-26 06:38:07
回答 3查看 1.2K关注 0票数 0

我正在尝试自定义地将D7迁移到D8文章,引用文件(图像)、分类法术语和用户(Uid)。我必须迁移所有这些实体所属的整个组吗

代码语言:javascript
复制
drush migrate_import --group=mygroup

保存这些推荐信好吗?

或者是否有可能运行一个附属迁移,但仍然保留引用,我的意思是

代码语言:javascript
复制
drush migrate_import mymigration

EN

回答 3

Drupal用户

回答已采纳

发布于 2017-05-26 22:35:15

--执行依赖项选项将导致您的“主”迁移所依赖的所有迁移首先运行,因此所有引用都将被解析:

代码语言:javascript
复制
drush mi --execute-dependencies mymigration

当然,“我的迁移”需要引用它在migration_dependencies中所依赖的迁移:

代码语言:javascript
复制
migration_dependencies:
  required:
    - my_file_migration
    - my_user_migration
...
票数 2
EN

Drupal用户

发布于 2017-05-26 12:51:15

我没有做过从D7到D8的迁移,但是对于从sql源迁移到D8的迁移,我发现最好是在“父”之前进行“子”迁移。迁移文章之前的用户、术语和文件也是如此。然后,如果回滚,请按照相反的顺序进行:父母先于孩子。

这篇博文对我很有帮助:http://www.mediacurrent.com/blog/migrating-content-references-drupal-8

这就是我在迁徙中组织事物的方式..。

在儿童移徙方面:

代码语言:javascript
复制
process:
  parent_id:
    plugin: migration_lookup
    migration: parent_migration
    source: my_parent_id

在父迁移中:

代码语言:javascript
复制
process:
# for the label field and any other non-reference fields, create 'stub' values in this manner:
  label_field:
  -
    plugin: get
    source: my_label_field
  -
    plugin: default_value
    default_value: 'Stub Label'
child_items:
  plugin: migration_lookup
  migration: child_migration
  source: my_child_items

注意:如果您的一些父实体没有任何子项,您可以使用skip_on_empty进程插件,如下所示,以确保这些父实体仍然被正确迁移。(如果所有父实体都需要子项,则可以通过将“方法”从“process”更改为“row”,从而在迁移中省略任何缺少子实体的父实体。)

代码语言:javascript
复制
  child_items:
  -
    plugin: skip_on_empty
    method: process
    source: my_child_items
  -
    plugin: migration_lookup
    migration: child_migration
票数 1
EN

Drupal用户

发布于 2022-08-31 15:47:24

迁移由它们的migration_dependencies自动处理:

例如:

代码语言:javascript
复制
id: upgrade_d7_field_instance_widget_settings
[...]
migration_dependencies:
  required:
    - upgrade_d7_field_instance
  optional:
    - upgrade_d7_field
    - upgrade_d7_field_instance

因此,如果您正在运行所有迁移(或所有迁移都来自一个标记或组),则根据它们的migration_dependencies计算它们的迁移顺序。

在本例中,upgrade_d7_field_instance_widget_settings只在迁移了upgrade_d7_field_instance之后才会运行!由于upgrade_d7_field是migration_dependency of upgrade_d7_field_instance,所以命令如下:

  1. upgrade_d7_field_instance
  2. upgrade_d7_field
  3. upgrade_d7_field_instance_widget_settings

因此,在运行单个迁移时,您应该小心!

例如,如果您在upgrade_d7_user之前运行upgrade_d7_field_instance,则您的自定义用户字段值可能不会被迁移!

这太棘手了!

我想这对你来说可能很有趣,有更多的细节:https://understanddrupal.com/lessons/introduction-migration-dependencies-drupal/

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/237115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档