Skip to main content
Drupal code

Main navigation

  • Home
  • Snippets
User account menu
  • Log in

Breadcrumb

  1. Home

Update BaseFieldDefinition with data migrate

By admin , 10 October, 2024

Tags

  • field
/**
* Extend poll choices more than 255 characters.
*/
function poll_update_8006() {
 $connection = Database::getConnection();
 $entity_definition_update_manager = Drupal::entityDefinitionUpdateManager();
 $entity_type_id = 'poll_choice';
 // Check if we have updates for entity type.
 if ($entity_definition_update_manager->needsUpdates()) {
   $changes = $entity_definition_update_manager->getChangeSummary();
   if (array_key_exists($entity_type_id, $changes)) {
     // Set tables to update.
     $tables_to_update = [
       $entity_type_id . '_field_data',
     ];
     $tables_data = [];
     // Copy content from entity tables.
     foreach ($tables_to_update as $table_to_update) {
       $tables_data[$table_to_update] = $connection->select($table_to_update)
         ->fields($table_to_update)
         ->execute()->fetchAll();
       $connection->truncate($table_to_update)->execute();
     }
     // Apply updates.
     $entity_field_manager = \Drupal::service('entity_field.manager');
     $entity_field_manager->clearCachedFieldDefinitions();
     $storage_definitions = $entity_field_manager->getFieldStorageDefinitions($entity_type_id);
     if ($storage_definitions['choice']) {
       $entity_definition_update_manager->updateFieldStorageDefinition($storage_definitions['choice']);
     }
     // Insert content into updated entity tables.
     foreach ($tables_data as $table_name => $table_data) {
       foreach ($table_data as $result) {
         $data = (array) $result;
         // Save the information in the table.
         $connection->insert($table_name)
           ->fields($data)
           ->execute();
       }
     }
   }
 }
}

Tags Cloud

dependency injection(21) form(18) drush(14) views(11) twig(11) preprocess(9) field(8) node(7) translate(7) render(6) tabs(6) controller(5) config(5) phpstorm(5) file(5) entityTypeManager(5) routes(5) comment(4) database(4) jquery(4) service(4) roles(4) phpunit(3) php(3) cache(3) entity(3) slick(3) block(3) custom entity(3) javascript(3) user(3) taxonomy(3) guzzle(3) url(3) phpstan(2) event(2) commerce(2) template(2) schema(2) migration(2) libraries(2) date(2) access(2) ajax(2) photoswipe(2) permissions(2) logger(2) vscode(2) suggestions(2) states(2) title(2) fieldset(2) redirect(2) mysql(2) git(1) request(1) attribute(1) service provider(1) csv(1) PHPDoc(1) table(1) eslint(1) deprecation(1) theme(1) errors(1) wsod(1) settings.php(1) watchdog(1) pager(1) widget(1) module(1) file.usage(1) queue(1) exif(1) imagemagick(1) image(1) media(1) uuid(1) drupal.org(1) tests(1) renderer(1) array(1) exposed form(1) page manager(1) transliteration(1) random(1) entityQuery(1) development(1) mail(1) webform(1) register(1) textarea(1) label(1) input(1) batch(1) import(1) messenger(1)
RSS feed
Powered by Drupal