У меня есть миграция узла с использованием 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.
Что мне не хватает? Как я могу сделать это лучше?