Încerc să implementez acest lucru într-un hook_update_N()
dar nu sunt sigur că este potrivit (a se vedea fragmentul de mai jos). Rețineți că schimb max_length în acest proces.
Ce încerc să fac: actualizează my_custom_entity.field_my_custom_field care a salvat date în el. Deci trebuie să:
- Stocați acele date
- Stocați configurațiile câmpului - dacă acest lucru este posibil?
- Depozitați depozitul de câmp - dacă acest lucru este posibil?
- Ștergeți câmpul
- Creați din nou câmpul folosind configurațiile stocate și stocarea
- Restaurați datele salvate
// Capturați configurațiile câmpurilor existente.
$field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
$câmp_nou = $câmp->toArray();
$new_field['field_type'] = 'șir';
$new_field['settings'] = [];
// Capturează stocarea câmpului existent.
$new_field_storage = $field_storage->toArray();
$new_field_storage['type'] = 'șir';
$new_field_storage['settings'] = [
'max_length' => $field_length,
'is_ascii' => FALSE,
'case_sensitive' => FALSE,
];
// Ștergeți câmpul existent + stocarea câmpului și ștergeți datele.
$field_storage->delete();
field_purge_batch(150);
// Creați un câmp nou utilizând configurațiile/setările capturate.
$new_field_storage = FieldStorageConfig::create($new_field_storage);
$new_field_storage->salvare();
$new_field = FieldConfig::create($new_field);
$câmp_nou->salvare();