Dans cette exemple, j'ai un champ (field_communiques_texte_wysiwig) qui a été créée en text brut long mais qui doit être migré en wysiwig avec son contenu
use Drupal\Core\Database\Database; /** * Update field_communiques_texte_wysiwig type */ function my_module_default_update_8008() { // Set up date to add the format column $table = 'field_communiques_texte_wysiwig'; $column = 'format'; $field = [ 'type' => 'varchar_ascii', 'length' => 255, ]; $schema = Database::getConnection()->schema(); // Update the data table $schema->addField('node__' . $table, $table . '_' . $column, $field); $schema->addIndex('node__' . $table, $table . '_' . $column, [$table . '_' . $column], [ 'fields' => [$table . '_' . $column => $field], ]); // The revision table $schema->addField('node_revision__' . $table, $table . '_' . $column, $field); $schema->addIndex('node_revision__' . $table, $table . '_' . $column, [$table . '_' . $column], [ 'fields' => [$table . '_' . $column => $field], ]); // Force the current configuration to be exactly like the YAML, // so that the subsequent import does not detect a change $config = \Drupal::configFactory() ->getEditable('field.storage.node.field_communiques_texte_wysiwig'); $depends = $config->get('dependencies'); $depends['module'][] = 'text'; $config->set('dependencies', $depends); $config->set('type', 'text_long'); $config->set('settings', []); $config->set('module', 'text'); $config->save(); // Current node field configurations $field_manager = \Drupal::getContainer()->get('entity_field.manager'); // Because the manager was already loaded before the above config was forced, // it will return the old configuration that was cached $field_manager->clearCachedFieldDefinitions(); $field_storage_configs = $field_manager->getFieldStorageDefinitions('node'); // Get the last installed manager, this is the gatekeeper that determines if // an update is needed or can be done $last_installed_repo = \Drupal::getContainer() ->get('entity.last_installed_schema.repository'); // Get the last installed configurations for node fields // These are iterative objects and need to stored as such, not just simple arrays, // so reusing the previously set configs is not an option $last_installed_configs = $last_installed_repo->getLastInstalledFieldStorageDefinitions('node'); // Force the last installed config to be the current for the field $last_installed_configs['field_communiques_texte_wysiwig'] = $field_storage_configs['field_communiques_texte_wysiwig']; $last_installed_repo->setLastInstalledFieldStorageDefinitions('node', $last_installed_configs); }