Tôi đang sử dụng di chuyển để nhập Sản phẩm thương mại từ tệp CSV. Tệp CSV không có sê-ri riêng, vì vậy tôi đang sử dụng caussownum nhưng rõ ràng nó sẽ không hoạt động nếu đã có sản phẩm - Tôi sẽ di chuyển liên tục từ các tệp CSV và vì vậy tôi cần một sê-ri thực. Vì vậy, câu hỏi lớn là, làm thế nào để tôi nói với Migrate để tạo serial của chính nó? prepareRowcảm thấy quá muộn vì dường như tôi cần cung cấp cho MigrateSQLMap một trường chính.
Đây là một phiên bản thô của hàm tạo của lớp:
public function __construct() {
parent::__construct();
$this->description = t('Test CSV');
$columns = array(
array('product_name', 'title'),
array('url', 'url'),
array('price', 'price'),
);
$this->source = new MigrateSourceCSV('/tmp/test.csv', $columns, array('header_rows' => 1));
$this->destination = new MigrateDestinationCommerceProduct('commerce_product', 'product');
$this->map = new MigrateSQLMap($this->machineName,
array(
'csvrownum' => array(
'type' => 'int',
'not null' => true,
),
),
MigrateDestinationCommerceProduct::getKeySchema('commerce_product')
);
$this->addFieldMapping('product_id', 'csvrownum');
$this->addFieldMapping('title', 'title');
$this->addFieldMapping('field_url', 'url');
$this->addFieldMapping('commerce_price', 'price');
}
prepareRownhư xa như bạn cung cấp sân khi tham số thứ tư trong bạn constructor .
drush mr YourClassName. Sử dụngcsvrownumnhư một lĩnh vực quan trọng không phải là một vấn đề xa như nó là duy nhất ...