ฉันกำลังพยายามใช้สิ่งนี้ใน 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['settings'] = [];
// จับภาพที่เก็บข้อมูลฟิลด์ที่มีอยู่
$new_field_storage = $field_storage->toArray();
$new_field_storage['type'] = 'สตริง';
$new_field_storage['การตั้งค่า'] = [
'max_length' => $field_length,
'is_ascii' => เท็จ,
'case_sensitive' => FALSE,
];
// ลบฟิลด์ที่มีอยู่ + ที่เก็บข้อมูลฟิลด์และล้างข้อมูล
$field_storage->ลบ();
field_purge_batch(150);
// สร้างฟิลด์ใหม่โดยใช้ configs/settings
$new_field_storage = FieldStorageConfig::create($new_field_storage);
$new_field_storage->บันทึก();
$new_field = FieldConfig::create($new_field);
$new_field->save();