2010-12-20 9 views
6

migrate moduleを使用して、複数のソースから新しいDrupalインストールにデータをコピーしています。これまでは、モジュールに付属のサンプルから必要なものをたくさん複製することができました。私は現在、新しく作成されたノードに用語やタクソノミを追加することに固執しています。例は示していますDrupal Migrateを使用してタクソノミの用語を追加するには

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

私はmigrate_example_beer_styles宛先マッピングを突き止めたのだが、その分類のためのmachine nameのようです。

私は私のmachine_nameがどうあるべきかのすべてのバリエーションで、この動作を模倣しようとしましたが、用語が関連付けられますように見えることはありません:

IDによって:

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

そして、名前:

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

タクソノミーの宛先マッピングがmachine nameであるとしますか?

このバージョンのmigrate moduleが最近リリースされました。ウェブ上に他の有用な例は見つかりませんでした。

答えて

1

私は現在、自分でmigrateモジュールを使用していますが、この時点でドキュメントが多少なりとも必要であることに同意します。 :)

語彙の「マシン名」は、語彙テーブルのフィールド 'module'にリストされています。その値を使用してみてください。 idsにではなく、マッピングにテキストを送る必要があることに注意してください。

+1

私はあなたが推奨する解決策につきものになりました。私はマシンフレンドリーな名前の代わりにボキャブラリー名(正確な場合が必要です)を使用しました。また、idではなく、テキスト上でのマッピングが見つかりました。 – labue

13

この質問はまだいくつかの意見が出ているようですので、私が発見したことを追加すると思います。受け入れ答えは動作しますが、あなたはIDにVocabsをマッピングすることができます:ソースIDの区切り文字列を渡すために使用

$this->addFieldMapping('Exact Case Sensitive Vocab Name', 'source_field_name') 
    ->sourceMigration('ExactSourceClassName') 
    ->arguments(array('source_type' => 'tid')) 
    ->separator(','); 

->separator(',')。明らかに、値の配列をマッピングする場合は、そのままにしておきます。

+0

私はマイグレーションでその話題を単純に渡そうとしていましたが、この問題が見つかるまでその理由が分からなかったのです。今私は知っている! – geerlingguy

+1

このコードでは、Migrateモジュールの最新バージョンで警告が発行されることを指摘しておきます。 IDにマップVocabsへの正しい方法は次のようになります。 'ます$ this-> addFieldMapping( '正確な大文字と小文字を区別する語彙名:SOURCE_TYPE') - >はdefaultValue( 'TID');私が持っているので、もし' – bmunslow

+1

OK( ' field_city')(entityReference)宛先と( 'Cities')タクソノミ用語とソーステーブルからの列(' name')のタクソノミー、これをどのように遂行しますか? '$ this-> addFieldMapping( 'Cities:source_type') - > defaultValue( 'tid');' 他に何が必要ですか? –

1

私はのための移行モジュールと周りつまずきしてきた...

これはstackoverflowの上の私の最初の投稿ですので、これは、この問題に関するより多くの情報を送信するために受け入れの方法ではない場合、私は事前に謝罪ここ数日、Drupal 7でこれを行う方法を探していました。使用したいXMLフィールド内にコンマで区切られたIDのリストがありましたが、私が見つけたすべての例は外部クラスから取得していました。データベースソースから取得します。

とにかく試行錯誤の結果、外部用語の移行クラスを参照するのではなく、移行クラス内のフィールドを使用できることがわかりました。

$this->addFieldMapping('field_article_type', 'category_id') 
    ->arguments(array('source_type' => 'tid')) 
    ->xpath('/article/category_id') 
    ->separator(','); 
0

タクソノミのcsvインポートモジュールをhttp://drupal.org/project/taxonomy_csvで確認してください。 使い方が簡単で、それ以上のことをしました。 importin gNodeにmigrateモジュールを使用して終了し、このモジュールを分類に使用しました。使用するのは楽しいことでした。

関連する問題