Перенос справочного поля таксономии в справочный объект - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь перенести поле ссылки на таксономию, прикрепленное к объекту типа field_collection (Drupal 7), в поле ссылки на сущность, присоединенное к типу сущности абзаца (Drupal 8.6).

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

id: d7_field_collection_field_name
label: My Field name
migration_tags:
  - Drupal 7
migration_group: migrate_drupal_7

source:
  plugin: d7_custom_source_plugin
process:
  field_title:
    plugin: get
    source: field_title
  field_job_category:
    plugin: get
    source: field_job_category
destination:
  plugin: 'entity_reference_revisions:paragraph'
  default_bundle: my_paragraphs_bundle
migration_dependencies:
  required:
    - upgrade_d7_field
    - upgrade_d7_node_type
    - upgrade_d7_field_collection_type
    - upgrade_d7_field_instance

Процесс миграции объясняется здесь: https://www.mtech -llc.com / blog / ada-hernandez / миграция-field-collection-d7-paras-node-d8

Итак, field_job_category не работает.Я попробовал так много способов в процессе плагинов без удачи.Например, я использовал:

  field_job_category:
    plugin: migration_lookup
    migration: upgrade_d7_taxonomy_term_job_categories
    source: term_id

Затем попытался использовать источники, так как я использую Drupal 8.6

  field_job_category:
    plugin: migration_lookup
    migration: upgrade_d7_taxonomy_term_job_categories
    sources:
      upgrade_d7_taxonomy_term_job_categories:
        - term_id

Я считаю, что это ошибка конфигурации в field_job_category, но я не мог понять этопока.

Ваша помощь очень ценится!

1 Ответ

0 голосов
/ 19 февраля 2019

Это удалось решить, выполнив две вещи.

Во-первых, используйте sub_process плагин процесса для моего поля.

field_job_category:
  -
    plugin: sub_process
    source: field_job_category
    process:
      target_id: tid

Наконец, реализуйте hook_migrate_prepare_row () дляпредоставить данные с правильной структурой для использования вышеуказанным подпроцессом

$row->setSourceProperty($field_name, $new_value);

И $ new_value должно быть

Array
(
  [0] => Array
    (
        [tid] => Term ID
    )
 )

Надеюсь, это поможет!Приветствия.

...