ฉันกำลังใช้โมดูลโยกย้ายสำหรับการโยกย้าย D7 ถึง D8 และฉันกำลังเขียนการโยกย้ายทั้งหมดด้วยตนเองในรหัส (แทนที่จะใช้โมดูลการโยกย้าย D7 ในตัวเนื่องจากฉันต้องการการควบคุมการย้ายที่ละเอียดยิ่งขึ้น)
ฉันมีโครงสร้างต่อไปนี้: ไซต์ D7 มีฟิลด์รูปภาพที่เก็บรูปภาพเป็นเอนทิตีไฟล์ บนไซต์ D8 เขตข้อมูลรูปภาพเป็นการอ้างอิงเอนทิตีไปยังเอนทิตีสื่อ (และเอนทิตีสื่อจะมีเขตข้อมูลรูปภาพ)
เดิมทีฉันมีสิ่งต่อไปนี้สำหรับการโยกย้ายรูปภาพของฉัน:
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
ภายในไฟล์การย้ายข้อมูลโหนดบทความของฉันฉันมีต่อไปนี้:
'field_article_image/target_id':
plugin: migration
migration: image_files
source: field_article_image
แต่ฉันรู้ว่ามันจะไม่ทำงาน target_id ที่มาจากการโยกย้าย image_files เป็น ID ของเอนทิตีของไฟล์ไม่ใช่ ID เอนทิตีของสื่อ ในโลกอุดมคติฉันต้องการค้นหาวิธีในการสร้างการย้ายข้อมูลครั้งที่สามซึ่งจะสร้างขั้นตอนกลางนี้และโอนย้ายเอนทิตีไฟล์ไปยังหน่วยงานสื่อแล้วแมปการโยกย้ายนั้นไปยังการโยกย้ายบทความ อย่างไรก็ตามฉันไม่สามารถหาวิธีที่ดีในการทำเช่นนี้
แผน B จะเป็นการสร้างปลั๊กอินกระบวนการสำหรับการย้ายรูปภาพซึ่งจะสร้างเอนทิตีไฟล์ด้วยตนเองแนบกับเอนทิตีสื่อและผ่านการโยกย้ายนั้นไปยังบทความ (ซึ่งจะเป็นการลบขั้นตอนกลาง) แม้ว่าจะสามารถย้อนกลับเอนทิตีสื่อได้ แต่ไฟล์เอนทิตีไม่สามารถทำได้