Migrate from different databases with Drupal module "Migrate"
Real example
class AritcleMigration extends DynamicMigration {
public function __construct() {
parent::__construct();
$this->team = array(
new MigrateTeamMember('Cornel Andreev', '[email protected]', t('Developer')),
);
$this->description = t('Article');
$this->map = new MigrateSQLMap($this->machineName, array('nid' => array(
'type' => 'int',
'not null' => TRUE,
'description' => 'Article id.',
'alias' => 'n'
)
), MigrateDestinationNode::getKeySchema()
);
$query = Database::getConnection('default', 'wikimig')
->select('node', 'n')
->fields('n')
->condition('type', 'article');
$count_query = Database::getConnection('default', 'wikimig')
->select('node', 'n');
$count_query->addExpression('COUNT(nid)', 'cnt');
$this->source = new MigrateSourceSQL($query, array(), $count_query, array('map_joinable' => FALSE));
$this->destination = new MigrateDestinationNode('article');
// Mapped fields
$this->addFieldMapping('title', 'title');
$this->addFieldMapping('language', 'language')
->defaultValue('en');
$this->addFieldMapping('created', 'created');
$this->addFieldMapping('changed', 'changed');
$this->addFieldMapping('body', 'theBodyFieldValue');
$this->addFieldMapping('body:format')->defaultValue('code');
$this->addFieldMapping('status')->defaultValue(NODE_NOT_PUBLISHED);
//$this->addFieldMapping('status')->defaultValue(1);
return;
}
public function prepareRow($row) {
$body = Database::getConnection('default', 'wikimig')
->select('field_data_body', 'b')
->fields('b')
->condition('entity_id', $row->nid, '=')
->execute()
->fetchObject();
if (isset($body->body_value)) {
$row->theBodyFieldValue = $body->body_value;
}
}
}