web-dev-qa-db-ja.com

OG:移行モジュールを使用して、CSVファイルから2つの関連ノードをインポートする方法

2つの関連ノード(Organic GroupOG group content)Migrateモジュールを使用して2つのCSVファイルからですが、適切なCSV移行クラスの例またはモジュールが見つかりません。私はDrupal 7.を使用します。

OG Group
  |
  |--OG group content

ファイル形式:

(a) OG Group file
=============================================
gid | group_title | group_body | group_admin

(b) OG group content
==================================
nid | gid | node_title | node_body

関係:

{a.gid} 1..(one-to-many)..* {b.gid}
{a.group_admin} *..(many-to-one)..1 {users.uid}  // group admin is one of existing users uid that should have the OG group administration membership rights

移行モジュールのサンプルCSV移行クラスはどこにありますか?

Migrate OG はD6専用です Migrate Extras にはD7のOGのクラスが含まれていますが、このシナリオの例が見つかりませんでした。

4
Refineo

わかりましたので、以前に移行を使用したことがないと想定しています。背景を読んでみたい場合は、デンバーのDrupalConで発表するプレゼンテーションのスライドをご覧ください。 http://denver2012.drupal.org/sites/default/files/slides/Migrate_0 .pdf いくつかの概念を理解するのに役立ちます。

指摘すべき重要なことの1つは、2つの移行が必要になることです。

  1. (a)およびMigrateSourceCSVをソースとして使用し、グループがノードであると想定して、宛先としてMigrateDestinationNodeを使用します。
  2. (b)とMigrateSourceCSVをソースとして使用し、MigrateDestinationOGMembership(Migrate Extrasの一部を説明したとおり)を宛先として使用します。

CSVファイルは、実際にはソースとして本当に使いやすいものです。 Migrateドキュメントでその例を見ることができます: http://drupal.org/node/1152158

あなたの場合、(a)のソースを次のように設定できます:

// The definition of the columns. Keys are integers, values are an 
// array of field name then description.
$columns = array(
  0 => array('gid', 'Id'),
  1 => array('group_title', 'Title'),
  2 => array('group_body', 'Body'),
  3 => array('group_admin', 'Admin'),
);

// Instantiate the class using the path to the CSV file and the columns.
$this->source = new MigrateSourceCSV('path/to/a.csv', $columns);

マップを設定するときは、ソースIDを格納するフィールドを作成する必要があるため、ソースについても知っておく必要があります。gidは基本的にnidなので、そのソースのスキーマ定義をだまして使用することができます。

$this->map = new MigrateSQLMap($this->machineName,
  MigrateDestinationNode::getKeySchema(),
  MigrateDestinationNode::getKeySchema()
);
6
drewish