entities
my_module.install
<?php
/**
* Change my_basefield max_length to 255.
*/
function my_module_update_10001() {
$entity_type_id = 'my_entity';
$field_name = 'my_basefield';
$field_length = 255;
/** @var \Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface $schema_repository */
$schema_repository = \Drupal::service('entity.last_installed_schema.repository');
/** @var \Drupal\Core\Entity\EntityFieldManager $entity_field_manager */
$entity_field_manager = \Drupal::service('entity_field.manager');
/** @var Drupal\Core\Field\BaseFieldDefinition[] $base_field_definitions */
$base_field_definitions = $entity_field_manager->getBaseFieldDefinitions($entity_type_id);
$schema_repository->setLastInstalledFieldStorageDefinition($base_field_definitions[$field_name]);
$field_storage_definitions = $schema_repository->getLastInstalledFieldStorageDefinitions($entity_type_id);
// Update the serialized schema property.
$rc = new \ReflectionClass($field_storage_definitions[$field_name]);
$schema_property = $rc->getProperty('schema');
$schema_property->setAccessible(TRUE);
$schema = $field_storage_definitions[$field_name]->getSchema();
$schema['columns']['value']['length'] = $field_length;
$schema_property->setValue($field_storage_definitions[$field_name], $schema);
// Update the field definition in the last installed schema repository.
$schema_repository->setLastInstalledFieldStorageDefinitions($entity_type_id, $field_storage_definitions);
// Update the storage schema.
$key_value = \Drupal::keyValue('entity.storage_schema.sql');
$key_name = $entity_type_id . '.field_schema_data.' . $field_name;
$storage_schema = $key_value->get($key_name);
// Update all tables where the field is present.
foreach ($storage_schema as &$table_schema) {
$table_schema['fields'][$field_name]['length'] = $field_length;
}
$key_value->set($key_name, $storage_schema);
// Update the database tables where the field is part of.
$db = Drupal::database();
foreach ($storage_schema as $table_name => $table_schema) {
$db->schema()->changeField($table_name, $field_name, $field_name, $table_schema['fields'][$field_name]);
}
}
29.01.2026 | Marc Hitscherich
Increasing the length of a basefield with data
getBundlesWithViewmode.php
private function getBundlesWithViewmode(string $entity_type, string $view_mode): array {
$bundles = [];
foreach (\Drupal::service('entity_type.bundle.info')->getBundleInfo($entity_type) as $bundle => $info) {
$view_modes = \Drupal::service('entity_display.repository')->getViewModeOptionsByBundle($entity_type, $bundle);
if (isset($view_modes[$view_mode])) {
$bundles[] = $bundle;
}
}
return $bundles;
}
11.06.2026 | Nikolas Kopp
List enabled view modes (view displays) for a bundle of an entity type
entity_field_value.php
// For single value fields.
$entity->field_name->value;
// If you don`t know the main property.
$main_property_name = $entity->field_name->getMainPropertyName();
// For multiple value fields.
$entity->field_name->getValue();
12.02.2026 | Michael Ebert
Get value of an entity field
⚠️ WARNING: Potential data loss. Use with caution.
scp_base.module
/**
* Run missing database schema updates.
*/
function mymodule_update_10001(&$sandbox) {
$entity_type_manager = \Drupal::entityTypeManager();
$entity_type_manager->clearCachedDefinitions();
$change_summary = \Drupal::service('entity.definition_update_manager')->getChangeSummary();
foreach ($change_summary as $entity_type_id => $change_list) {
$entity_type = $entity_type_manager->getDefinition($entity_type_id);
\Drupal::entityDefinitionUpdateManager()->installEntityType($entity_type);
}
}
07.05.2026 | Peter Gerken