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ó? prepareRow
cả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');
}
prepareRow
như xa như bạn cung cấp sân khi tham số thứ tư trong bạn constructor .
drush mr YourClassName
. Sử dụngcsvrownum
như 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 ...