/** * Data migration * * @return bool * @throws \Migration\Exception */ protected function data() { $this->getRewritesSelect(); $this->progress->start($this->getIterationsCount()); $this->destination->clearDocument('url_rewrite'); $sourceDocument = $this->source->getDocument($this->tableName); $destinationDocument = $this->destination->getDocument('url_rewrite'); $destProductCategory = $this->destination->getDocument('catalog_url_rewrite_product_category'); $duplicates = $this->getDuplicatesList(); if (!empty($duplicates) && !empty($this->configReader->getOption('auto_resolve_urlrewrite_duplicates')) && empty($this->duplicateIndex)) { foreach ($duplicates as $row) { $this->duplicateIndex[$row['request_path']][] = $row; } } $pageNumber = 0; while (!empty($data = $this->source->getRecords($sourceDocument->getName(), $pageNumber))) { $pageNumber++; $records = $this->recordCollectionFactory->create(); $destProductCategoryRecords = $destProductCategory->getRecords(); foreach ($data as $row) { $this->progress->advance(); $records->addRecord($this->recordFactory->create(['data' => $row])); $productCategoryRecord = $this->getProductCategoryRecord($destProductCategory, $row); if ($productCategoryRecord) { $destProductCategoryRecords->addRecord($productCategoryRecord); } } $destinationRecords = $destinationDocument->getRecords(); $this->migrateRewrites($records, $destinationRecords); $this->destination->saveRecords($destinationDocument->getName(), $destinationRecords); $this->destination->saveRecords($destProductCategory->getName(), $destProductCategoryRecords); } $this->copyEavData('catalog_category_entity_url_key', 'catalog_category_entity_varchar', 'category'); $this->copyEavData('catalog_product_entity_url_key', 'catalog_product_entity_varchar', 'product'); $this->progress->finish(); return true; }
/** * @return Record\Collection */ public function getRecords() { return $this->recordCollectionFactory->create(['structure' => $this->structure, 'documentName' => $this->getName()]); }