/** * Migrate Entries from source to target tables (if possible) * * TODO: Delete existing Select/Multiselect Values if the new Backend Type is not one of Select/Multiselect * * @param Mage_Eav_Model_Entity_Attribute $attribute Attribute Model * @param string $targetType Target Backend Type * @return void */ protected function _migrateData($attribute, $targetType) { /** @var Varien_Db_Adapter_Interface $_dbConnection */ $_dbConnection = Mage::getSingleton('core/resource')->getConnection('core_write'); // e.g. Entity is 'catalog_product' $entityTypeCode = $attribute->getEntity()->getData('entity_type_code'); // Set Backend Types for later reference $sourceType = $attribute->getBackendType(); // Create complete Entity Table names, e.g. 'catalog_product_entity_text' $sourceTable = implode([$entityTypeCode, 'entity', $sourceType], '_'); $targetTable = implode([$entityTypeCode, 'entity', $targetType], '_'); // Select all existing entries for given Attribute $srcSql = 'SELECT' . ' * FROM ' . $sourceTable . ' WHERE attribute_id = ? AND entity_type_id = ?'; /** @var Zend_Db_Statement_Interface $sourceQuery */ $sourceQuery = $_dbConnection->query($srcSql, [$attribute->getId(), $attribute->getEntity()->getData('entity_type_id')]); $this->_migrateNonSelect($targetType, $sourceQuery, $sourceType, $targetTable, $_dbConnection, $sourceTable); }