Saya menggunakan modul Migrasi untuk migrasi D7 ke D8 dan saya menulis seluruh migrasi secara manual dalam kode (daripada menggunakan modul migrasi D7 bawaan, karena saya ingin lebih banyak kontrol granual pada migrasi.)
Saya memiliki struktur berikut: situs D7 memiliki bidang gambar tempat gambar disimpan sebagai entitas File. Di situs D8, bidang gambar adalah referensi entitas ke entitas Media (dan entitas Media pada gilirannya memiliki bidang Gambar.)
Awalnya, saya memiliki yang berikut untuk migrasi Gambar saya:
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
Di dalam file migrasi simpul artikel saya, saya memiliki yang berikut ini:
'field_article_image/target_id':
plugin: migration
migration: image_files
source: field_article_image
tetapi saya menyadari bahwa ini tidak akan berhasil. Target_id yang berasal dari migrasi image_files benar-benar ID Entitas File, bukan ID entitas media. Di dunia yang ideal, saya ingin menemukan cara untuk membuat migrasi ketiga, yang akan membuat langkah tengah ini, dan memigrasikan entitas file ke Entitas Media dan kemudian memetakan migrasi tersebut ke migrasi Artikel. Namun, saya tidak bisa menemukan cara yang baik untuk melakukan ini.
Plan B hanya akan membuat plugin proses untuk migrasi gambar, yang secara manual akan membuat entitas file, melampirkannya ke entitas media, dan meneruskan migrasi itu ke Artikel (ini menghilangkan langkah tengah). Ini berarti, meskipun, sementara entitas Media dapat diputar kembali, Entitas File tidak bisa.