Рейтинг:1

Как перенести значения из многозначного поля ссылки на термин таксономии D7 в поле D9?

флаг in

У меня есть миграция узла с использованием d7_узел исходный плагин.

Я пытаюсь перенести значения поля ссылки на термин таксономии с несколькими значениями в поле ссылки таксономии с несколькими значениями в D9. Существует отдельная миграция для импорта терминов таксономии, которая отлично работает.

В моей миграции узла у меня есть что-то вроде:

field_my_tax_field:
  плагин: migration_lookup
  миграция: my_taxonomy_migration_id
  источник: field_my_d7_tax_field

Однако это вызывает исключение, и миграция завершается ошибкой. Когда я добавляю точку останова Drupal\migrate\Plugin\migrate\process\MigrationLookup::transform() (где генерируется исключение), я вижу, что передаваемое значение является массивом, но плагину поиска требуется скалярное значение. Переданный массив выглядит примерно так:

['target_id' => 123]

С этой информацией я могу выполнить эту работу, обновив конфигурацию миграции, добавив что-то вроде:

field_my_tax_field:
  - плагин: обратный вызов
    вызываемый: сброс
    источник: field_my_d7_tax_field
  - плагин: migration_lookup
    миграция: my_taxonomy_migration_id
    

С использованием перезагрузить() как это чувствует себя свободно. И кажется странным, что этот дополнительный шаг необходим, это похоже на вариант использования № 1 для функции migration_lookup.

Что мне не хватает? Как я могу сделать это лучше?

Рейтинг:1
флаг in

Один из вариантов — использовать Drupal\мигрировать\плагин\мигрировать\процесс\подпроцесс (подпроцесс) плагин:

Запускает массив массивов через собственный конвейер процесса.

Плагин sub_process принимает массив ассоциативных массивов и запускает каждый из них через собственный конвейер процесса, создавая новый ассоциативный массив преобразованных значений с ключами.

field_my_tax_field:
  плагин: sub_process
  источник: field_my_d7_tax_field
  процесс:
    target_id: 
      плагин: migration_lookup
      миграция: my_taxonomy_migration_id
      источник: target_id

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.