Я пытаюсь реализовать это в hook_update_N()
но я не уверен, что это правильно (см. отрывок ниже). Обратите внимание, что в процессе я изменяю max_length.
Что я пытаюсь сделать: обновить my_custom_entity.field_my_custom_field, в котором сохранены данные. Итак, мне нужно:
- Храните эти данные
- Сохраните настройки полей — возможно ли это?
- Сохранить полевое хранилище — возможно ли это?
- Удалить поле
- Снова создайте поле, используя сохраненные конфигурации и хранилище
- Восстановить сохраненные данные
// Захватите существующие конфигурации полей.
$field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
$new_field = $field->toArray();
$new_field['field_type'] = 'строка';
$new_field['настройки'] = [];
// Захватить существующее хранилище полей.
$new_field_storage = $field_storage->toArray();
$new_field_storage['тип'] = 'строка';
$new_field_storage['настройки'] = [
'max_length' => $field_length,
'is_ascii' => ЛОЖЬ,
'с учетом регистра' => ЛОЖЬ,
];
// Удалить существующее поле + хранилище полей и очистить данные.
$field_storage->удалить();
field_purge_batch (150);
// Создаем новое поле, используя захваченные конфиги/настройки.
$new_field_storage = FieldStorageConfig::create($new_field_storage);
$new_field_storage->сохранить();
$new_field = FieldConfig::create($new_field);
$new_field->сохранить();