Ich verwende das Migrationsmodul für eine Migration von D7 nach D8 und schreibe die gesamte Migration manuell in Code (anstatt das integrierte D7-Migrationsmodul zu verwenden, da ich eine genauere Kontrolle über die Migration wünschte.)
Ich habe die folgende Struktur: Die D7-Site hat ein Bildfeld, in dem Bilder als Dateientitäten gespeichert werden. Auf der D8-Site ist das Bildfeld eine Entitätsreferenz auf eine Medienentität (und die Medienentität verfügt wiederum über ein Bildfeld).
Ursprünglich hatte ich Folgendes für meine Bildermigration:
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
In meiner Artikelknoten-Migrationsdatei hatte ich Folgendes:
'field_article_image/target_id':
plugin: migration
migration: image_files
source: field_article_image
aber mir wurde klar, dass dies nicht funktionieren würde. Die Ziel-ID, die aus der Migration von image_files stammt, waren tatsächlich Dateientitäts-IDs, keine Medienentitäts-IDs. In der idealen Welt möchte ich einen Weg finden, um eine dritte Migration zu erstellen, die diesen mittleren Schritt erstellt, und Dateieinheiten in Medienentitäten zu migrieren und diese Migration dann der Artikelmigration zuzuordnen. Ich kann jedoch keinen guten Weg finden, dies zu tun.
Plan B besteht einfach darin, ein Prozess-Plugin für die Bildmigration zu erstellen, mit dem Dateieinheiten manuell erstellt, an Medienentitäten angehängt und diese Migration an Artikel übergeben werden (dies entfernt den mittleren Schritt). Dies würde jedoch bedeuten, dass Medienentitäten zwar zurückgesetzt werden können, Dateieinheiten jedoch nicht.