Search code examples
drupaldrupal-7migrate

How do I add taxonomy terms using Drupal Migrate


I'm using the migrate module to copy data from several sources to a new drupal installation. So far, I'm able to replicate a lot of what I need from the examples provided with the module. I'm currently stuck on adding terms or taxonomy to newly created nodes. The example shows:

// These are related terms, which by default will be looked up by name
$this->addFieldMapping('migrate_example_beer_styles', 'terms')
     ->separator(',');

I've tracked down the migrate_example_beer_styles destination mapping and it seems to be the machine name for that taxonomy.

I've tried imitating this behavior with every variation of what my machine_name should be, but the terms never seem to get associated:

By id:

// where source breed_id is '1,100' - it finds mapped values accordingly
$this->addFieldMapping('breeds', 'breed_id')
     ->sourceMigration('BreedMigration')
     ->separator(',')

And, by name:

// where source breeds is 'Dogs,German Shepherd'
$this->addFieldMapping('breeds', 'breeds')
     ->separator(',');

Am I wrong assuming the destination mapping is the machine name for a taxonomy?

This version of the migrate module was released recently, I haven't found any other helpful examples on the web.


Solution

  • I'm currently working with migrate module myself, and I agree that the documentation is somewhat wanting at this point. :)

    The 'machine name' of a vocabulary is listed in the Vocabulary table, in the field 'module'. Try using that value. Do note that you need to feed the text into the mapping, not the ids.