Estoy usando el módulo Migrate para una migración de D7 a D8 y estoy escribiendo toda la migración manualmente en código (en lugar de usar el módulo de migración D7 integrado, ya que quería un control más granular de la migración).
Tengo la siguiente estructura: el sitio D7 tiene un campo de imagen donde las imágenes se almacenan como entidades de archivo. En el sitio D8, el campo de imagen es una referencia de entidad a una entidad de Medios (y la entidad de Medios a su vez tiene un campo de Imagen).
Originalmente, tenía lo siguiente para mi migración de Imágenes:
id: image_files
source:
plugin: legacy_images
constants:
source_base_path: http://example.com/
destination:
plugin: 'entity:file'
process:
fid: fid
filename: filename
source_full_path:
-
plugin: concat
delimiter: /
source:
- constants/source_base_path
- uri
-
plugin: urlencode
uri:
plugin: file_copy
source:
- '@source_full_path'
- uri
filemime: filemime
status: status
Dentro de mi archivo de migración de nodo de artículo, tenía lo siguiente:
'field_article_image/target_id':
plugin: migration
migration: image_files
source: field_article_image
pero me di cuenta de que esto no funcionaría. El target_id proveniente de la migración de image_files era realmente ID de entidad de archivo, no ID de entidad de medios. En el mundo ideal, me gustaría encontrar una manera de crear una tercera migración, que crearía este paso intermedio, y migraría las entidades de archivo a Entidades de Medios y luego asignaría esa migración a la migración de Artículos. Sin embargo, no puedo encontrar una buena manera de hacer esto.
El Plan B será simplemente crear un complemento de proceso para la migración de imágenes, que creará manualmente entidades de archivos, las adjuntará a entidades de medios y pasará esa migración a Artículos (esto elimina el paso intermedio). Sin embargo, esto significaría que, si bien las entidades de medios se pueden revertir, las entidades de archivo no.