カスタムユーザーフィールドを外部のUSERデータベーステーブルからDrupal 7.のカスタムテーブルに移行します。
ユーザーのカスタムフィールド(名、姓など)を管理/構成/アカウント設定の下に作成しました。管理/人/に移動して各フィールドの横にある[編集]をクリックすると、これらのフィールドが作成されていることを確認できますユーザー。
また、D7は、作成した個々のカスタムフィールドごとに、「field_data_field_ [FIELD_NAME]」という形式の新しいテーブルを作成したことも知っています(つまり、field_data_field_first_name、field_data_field_last_nameなど)。
詳細について知りたいコマンドは次のとおりです。
MigrateDestinationUser::getKeySchema();
$this->destination = new MigrateDestinationUser();
上記のコマンドがユーザーをデフォルトの「ユーザー」データベースにインポートするために使用されるデフォルトであることを理解しています。
コンテンツを別のD7テーブルに移行するにはどうすればよいですか?たとえば、名を外部テーブルからfield_data_field_first_nameに移行しますか?
マイグレーションの例がここにあり(自分のものではありません)、そのGistにいくつかのフォローアップコメントがあります: https://Gist.github.com/893241
あなたが話しているのは、古いデータのフィールドをdrupalの新しいデータのフィールドにマッピングすることです。
これを行うには、MigrationクラスコンストラクターでaddFieldMapping()
を呼び出します。マイグレーション__constructor()
関数には、通常3つの大きな部分があります。
addField('new_drupal_field', 'old_value')->default('is_published', TRUE);
またはインスタンスaddField('new_drupal_field', 'old_value')->seperator(',')
を使用して、行ごとに複数のエントリを作成します。これらのページのドキュメントを参照してください:
移行クラス全体、さらに重要なのはそのコンストラクターは、基本的にdrupalが移行の行ごとに行うことのレシピです。
したがって、ソース$ query(基本的にはOLD_TABLEのSELECT field1、field2、field3)を取得した後、次を呼び出します。
// this is like saying field_first_name = old_field1
$this->addFieldMapping('field_first_name', 'old_field1');