quoteSetup = $quoteSetup; $this->aggregatedFieldConverter = $aggregatedFieldConverter; $this->queryModifierFactory = $queryModifierFactory; $this->queryGenerator = $queryGenerator; } /** * Convert data for additional_information field in quote_payment table from serialized * to JSON format * * @return void * @throws \InvalidArgumentException */ public function convert() { $queryModifier = $this->queryModifierFactory->create( 'in', [ 'values' => [ 'code' => [ 'parameters', 'info_buyRequest', 'attributes', 'bundle_option_ids', 'bundle_selection_ids', 'bundle_selection_attributes', ] ] ] ); $this->aggregatedFieldConverter->convert( [ new FieldToConvert( SerializedToJson::class, $this->quoteSetup->getTable('quote_payment'), 'payment_id', 'additional_information' ), new FieldToConvert( SerializedToJson::class, $this->quoteSetup->getTable('quote_payment'), 'payment_id', 'additional_data' ), new FieldToConvert( SerializedToJson::class, $this->quoteSetup->getTable('quote_address'), 'address_id', 'applied_taxes' ), new FieldToConvert( SerializedToJson::class, $this->quoteSetup->getTable('quote_item_option'), 'option_id', 'value', $queryModifier ), ], $this->quoteSetup->getConnection() ); $select = $this->quoteSetup->getSetup() ->getConnection() ->select() ->from( $this->quoteSetup->getSetup() ->getTable('catalog_product_option'), ['option_id'] ) ->where('type = ?', 'file'); $iterator = $this->queryGenerator->generate('option_id', $select); foreach ($iterator as $selectByRange) { $codes = $this->quoteSetup->getSetup() ->getConnection() ->fetchCol($selectByRange); $codes = array_map( function ($id) { return 'option_' . $id; }, $codes ); $queryModifier = $this->queryModifierFactory->create( 'in', [ 'values' => [ 'code' => $codes ] ] ); $this->aggregatedFieldConverter->convert( [ new FieldToConvert( SerializedToJson::class, $this->quoteSetup->getTable('quote_item_option'), 'option_id', 'value', $queryModifier ), ], $this->quoteSetup->getConnection() ); } } }