在一次迁移中生成具有名称和分类参考字段的术语

Generate term with name and taxonomy reference field in one migration

提问人:rvdv 提问时间:11/14/2023 更新时间:11/16/2023 访问量:20

问:

我有(虚构的等价物)情况: 我有一个 xlsx,它将由 migrate_spreadsheet 迁移。 该文件生成节点,每个节点由 2 个参考分类字段(“provider”和“provider_name”)组成。

provider_name很简单,只要存在与源对应的术语,就引用它,否则先生成它:

field_provider_name:
  plugin: entity_generate
  source: 'provider_name'

但是,提供程序引用默认的 name-field,但也引用第二个(在 provider-taxonomy-term 内)分类引用字段:field_provider_number。

因此:

field_provider:
  name
  field_provider_number:
     provider_number_taxonomy

如何使用一个migration.yml生成节点? 原因是我需要以编程方式调用迁移,直到现在我有 2 个,但我需要使用 batchImport 调用它们。

excel 文件包含

  • REGNR(唯一)
  • 供应商
  • provider_name
  • provider_number

直到知道我有 2 次迁移。但是我需要一个来使用 batchImport。

PHP 迁移 drupal-9

评论


答:

0赞 MilanG 11/16/2023 #1

首先,我必须指出,在单次迁移期间生成多种类型的实体以及多个目标项是不好的做法。回滚时,“动态”创建的内容将保留。另外,如果您使用更新标志运行怎么办?因此,我强烈建议对迁移的每种实体类型进行单独迁移。

但是,如果您坚持,您可以创建自定义流程插件,并从中做任何您想做的事情,即时创建项目。您可以像常规插件一样向它传递参数。基本上,您必须扩展类并提供您的方法,该方法可以即时查找/创建分类术语以及需要的任何其他内容。检查一些现有的插件 - 它相当简单。ProcessPluginBasetransform()