web-dev-qa-db-ja.com

Drush Migrationを使用してエンティティ関連フィールドをインポートするにはどうすればよいですか?

Drupal 7サイトからDrupal 8サイトを使用してdrush移行を使用して8サイトに)データを移行しようとしています例: 5〜7個のフィールドを持つユーザーをインポートしようとしています。次の方法でフィールドをインポートしようとしました。

  • d7_field
  • d7_field_instance

これら2つは、Drupal 7(users、taxonomy、node)のすべてのフィールドをインポートしています。これを制限して、特定のエンティティフィールドのみをインポートできますか?

1
Swathi Y

カスタムの移行モジュールを使用してこれを実現できます。これにより、移行対象を完全に制御できます。太字のテキストに注意してください。

  • Drushを使用したアップグレードで説明されているように、drush migrate-upgrade --configure-onlyを使用して移行を作成します。
  • 次のステップで書き込むaconfig/syncdirectoryがあることを確認してください
  • Drush config:exportを使用してマイグレーションをエクスポートする
  • カスタム移行モジュールを作成する
  • 使用するYMLファイルのみをconfig/syncディレクトリから新しいカスタムモジュールのconfig/installディレクトリにコピーし、編集して削除しますuuid値、および必要に応じてID、グループ、ラベル、およびその他の値を編集する
  • 新しいカスタムモジュールのconfig/installディレクトリで、新しい移行グループ用の新しいmigrate_plus.migration_group.your_module.ymlファイルを作成します。

公式ハンドブックから: https://www.drupal.org/docs/8/upgrade/customize-migrations-when-upgrading-to-drupal-8

フィールドの名前を変更することもできます。 hook_migrate_prepare_row()hook_migration_plugins_alter()、さらにはカスタムプロセスプラグインでさらに処理が行われる可能性があります。

更新

サイトから構成をエクスポートして他のサイトに移動することはしないことに注意してください。ここでは、構成のエクスポートは不適切な名前です。 generate migration templateと読みます。

テンプレート(別名、エクスポート)を生成したら、生成されたすべての利用可能なファイルから必要なフィールド、エンティティ、構成をハンドピックし、それらをカスタムモジュールに入れ、たとえばmy_custom_migと指定して有効にし、移行を実行します。

3
hkoosha