मैं एक डी 7 से डी 8 माइग्रेशन के लिए माइग्रेट मॉड्यूल का उपयोग कर रहा हूं और मैं पूरे माइग्रेशन को कोड में मैन्युअल रूप से लिख रहा हूं (बजाय डी 7 माइग्रेट मॉड्यूल में निर्मित का उपयोग करने के बजाय, क्योंकि मैं माइग्रेशन पर अधिक दानेदार नियंत्रण चाहता था।)
मेरे पास निम्न संरचना है: 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
लेकिन मुझे एहसास हुआ कि यह काम नहीं करेगा। Image_files माइग्रेशन से आने वाले target_id वास्तव में फ़ाइल एंटिटी आईडी के थे, मीडिया इकाई आईडी के नहीं। आदर्श दुनिया में, मैं तीसरा माइग्रेशन बनाने का एक तरीका खोजना चाहता हूं, जो इस मध्य चरण को बनाए, और मीडिया एंटिटीज में फाइल एंटिटीज को माइग्रेट करें और फिर उस माइग्रेशन को आर्टिकल माइग्रेशन में मैप करें। हालाँकि, मैं यह करने का एक अच्छा तरीका नहीं समझ सकता।
प्लान बी बस छवियों के माइग्रेशन के लिए एक प्रक्रिया प्लगइन बनाने के लिए होगा, जो मैन्युअल रूप से फ़ाइल इकाइयां बनाएगा, उन्हें मीडिया संस्थाओं से संलग्न करेगा, और उस माइग्रेशन को लेखों में पास करेगा (यह मध्य चरण को हटाता है)। हालांकि, इसका मतलब यह होगा कि जब मीडिया संस्थाओं को वापस लाया जा सकता है, फाइल एंटिटीज नहीं कर सकती हैं।