Json資料來源,可能有很多種情況,像是:
資料清單和資料詳細內容是不同的檔案
資料清單和資料詳細內容都在同一個檔案
資料清單和資料詳細內容都在同一個檔案,但在其中卻是位於不同階層
您可以看官網這一篇:JSON-based source classes
底下是小弟實作 Migration的Class (從範例改來的:example_baseball)
/**
* 匯入 Onnie 商品資料
*/
class MigrateOnnieProd extends DynamicMigration {
public function __construct(array $arguments) {
$this->arguments = $arguments;
parent::__construct();
// 這個模組顯示時的說明
$this->description = t('從 JSON URL 匯入 Onnie 商品 .');
// 設定 匯入資料的 primary key or unique key
$source_key = array(
'PROD_NO' => array('type' => 'varchar',
'length' => 20,
'not null' => TRUE,
'description' => '商品編號',
)
);
// 設定 來源 和 目的地 資料的 primary key or unique key
$this->map = new MigrateSQLMap($this->machineName,
$source_key,
MigrateDestinationNode::getKeySchema()
);
//設定 來源資料 的 欄位有哪些
$source_fields=array(
'PROD_NO' ='this is PROD_NO.',
'PROD_NAME' = 'this is PROD_NAME.',
'PRICE' = 'this is PRICE.',
);
// 設定 資料來源
$srcUrl='http://code.onnie.biz/onnie_prod.json';
$this->source = new MigrateSourceJSON($srcUrl, 'PROD_NO', $source_fields);
// 設定 匯入目的地
$this->destination = new MigrateDestinationNode('onnie_prod');
// 設定 來源 和 目的地 之欄位的對映
$this->addFieldMapping('title', 'PROD_NAME')
->description('商品名稱');
$this->addFieldMapping('field_prod_no', 'PROD_NO')
->description('商品編號');
$this->addFieldMapping('uid')->defaultValue(1);//設定目的地欄位uid,值都為1
}
// 這個 migration 的 machine name
protected function generateMachineName($class_name = NULL) {
return 'migrate_onnie_prod';
}
}// end of class MigrateOnnieProd
0 意見:
張貼留言