function apigee_edge_update_8101 in Apigee Edge 8
Increase the max_length for first_name and last_name fields.
File
- ./
apigee_edge.install, line 209 - Copyright 2018 Google Inc.
Code
function apigee_edge_update_8101() {
$entity_type_id = 'user';
$fields = [
'first_name',
'last_name',
];
$field_length = 64;
$definition_update_manager = \Drupal::entityDefinitionUpdateManager();
$last_installed_schema_repository = \Drupal::service('entity.last_installed_schema.repository');
/** @var \Drupal\Core\Field\FieldStorageDefinitionInterface[] $field_storage_definitions */
$field_storage_definitions = $last_installed_schema_repository
->getLastInstalledFieldStorageDefinitions($entity_type_id);
$entity_type = $definition_update_manager
->getEntityType($entity_type_id);
$definition = \Drupal::entityTypeManager()
->getDefinition($entity_type_id);
$data_table = $definition
->getDataTable();
$revision_data_table = $definition
->getRevisionDataTable();
$entity_storage_schema_sql = \Drupal::keyValue('entity.storage_schema.sql');
$schema = \Drupal::database()
->schema();
// Update the field storage definition.
foreach ($fields as $field_name) {
$field_storage_definitions[$field_name]
->setSetting('max_length', $field_length);
}
$definition_update_manager
->updateFieldableEntityType($entity_type, $field_storage_definitions);
// Update table schema.
foreach ($fields as $field_name) {
$schema_key = "{$entity_type_id}.field_schema_data.{$field_name}";
if ($field_schema_data = $entity_storage_schema_sql
->get($schema_key)) {
// Update storage schema for data table.
$field_schema_data[$data_table]['fields'][$field_name]['length'] = $field_length;
// Update storage schema for the revision table.
if ($revision_data_table) {
$field_schema_data[$revision_data_table]['fields'][$field_name]['length'] = $field_length;
}
$entity_storage_schema_sql
->set($schema_key, $field_schema_data);
// Update the base database field.
$schema
->changeField($data_table, $field_name, $field_name, $field_schema_data[$data_table]['fields'][$field_name]);
// Update schema for the revision table.
if ($revision_data_table) {
$schema
->changeField($revision_data_table, $field_name, $field_name, $field_schema_data[$revision_data_table]['fields'][$field_name]);
}
}
}
}