moduleDataSetup = $moduleDataSetup; $this->fieldDataConverterFactory = $fieldDataConverterFactory; $this->queryModifierFactory = $queryModifierFactory; $this->queryGenerator = $queryGenerator; } /** * {@inheritdoc} */ public function apply() { $this->convertSerializedData(); } /** * {@inheritdoc} */ public static function getDependencies() { return []; } /** * {@inheritdoc} */ public static function getVersion() { return '2.0.1'; } /** * {@inheritdoc} */ public function getAliases() { return []; } private function convertSerializedData() { $connection = $this->moduleDataSetup->getConnection(); $fieldDataConverter = $this->fieldDataConverterFactory->create(SerializedToJson::class); $queryModifier = $this->queryModifierFactory->create( 'in', [ 'values' => [ 'code' => [ 'parameters', 'info_buyRequest', 'bundle_option_ids', 'bundle_selection_ids', 'attributes', 'bundle_selection_attributes', ] ] ] ); $fieldDataConverter->convert( $connection, $this->moduleDataSetup->getTable('wishlist_item_option'), 'option_id', 'value', $queryModifier ); $select = $connection ->select() ->from( $this->moduleDataSetup->getTable('catalog_product_option'), ['option_id'] ) ->where('type = ?', 'file'); $iterator = $this->queryGenerator->generate('option_id', $select); foreach ($iterator as $selectByRange) { $codes = $connection->fetchCol($selectByRange); $codes = array_map( function ($id) { return 'option_' . $id; }, $codes ); $queryModifier = $this->queryModifierFactory->create( 'in', [ 'values' => [ 'code' => $codes ] ] ); $fieldDataConverter->convert( $connection, $this->moduleDataSetup->getTable('wishlist_item_option'), 'option_id', 'value', $queryModifier ); } } }