Am o migrare de nod folosind d7_node plugin sursă.
Încerc să migrez valorile unui câmp de referință pentru termeni de taxonomie cu mai multe valori într-un câmp de referință pentru taxonomie cu mai multe valori în D9. Există o migrare separată pentru a importa termenii taxonomiei care funcționează excelent.
În migrarea nodului meu, am ceva de genul:
field_my_tax_field:
plugin: migration_lookup
migrare: my_taxonomy_migration_id
sursa: field_my_d7_tax_field
Cu toate acestea, aceasta aruncă o excepție și migrarea eșuează. Când introduc un punct de întrerupere Drupal\migrate\Plugin\migrate\process\MigrationLookup::transform() (unde se aruncă excepția), pot vedea că valoarea transmisă este o matrice, dar pluginul de căutare vrea o valoare scalară. Matricea transmisă este ceva de genul:
['target_id' => 123]
Cu aceste informații, pot face asta să funcționeze actualizându-mi configurația de migrare cu ceva de genul:
field_my_tax_field:
- plugin: callback
apelabil: resetare
sursa: field_my_d7_tax_field
- plugin: migration_lookup
migrare: my_taxonomy_migration_id
Folosind reset()
ca asta se simte liber. Și pare ciudat că acest pas suplimentar este necesar, acesta pare a fi cazul de utilizare #1 pentru funcția migration_lookup.
Ce îmi lipsește? Cum pot face asta într-un mod mai bun?