Рейтинг:2

Как я могу зафиксировать конфигурацию и хранилище поля, чтобы удалить его, а затем создать заново?

флаг pl

Я пытаюсь реализовать это в hook_update_N() но я не уверен, что это правильно (см. отрывок ниже). Обратите внимание, что в процессе я изменяю max_length.

Что я пытаюсь сделать: обновить my_custom_entity.field_my_custom_field, в котором сохранены данные. Итак, мне нужно:

  1. Храните эти данные
  2. Сохраните настройки полей — возможно ли это?
  3. Сохранить полевое хранилище — возможно ли это?
  4. Удалить поле
  5. Снова создайте поле, используя сохраненные конфигурации и хранилище
  6. Восстановить сохраненные данные
  // Захватите существующие конфигурации полей.
  $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->сохранить();

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.