ฉันจำเป็นต้องอัปเดตตัวเลือกค่าที่อนุญาตในฟิลด์ list_integer ด้วยเหตุผลต่างๆ ในขณะนี้ ฉันไม่สามารถอัปเดตและส่งออกการกำหนดค่าและนำเข้าในการผลิตได้จนกว่าเราจะนำ config_ignore ไปใช้ นอกจากนี้ ฉันไม่ต้องการแก้ไขบล็อกหลายประเภทเพื่ออัปเดตฟิลด์บางฟิลด์ที่กำลังเกิดขึ้นในหลายๆ สภาพแวดล้อม ดังนั้นหากฉันสามารถเขียนสคริปต์ได้และประหยัดเวลา นั่นคือสิ่งที่ฉันต้องการจะทำ
ในการอัปเดต hook ฉันกำลังลองสิ่งนี้:
/**
* อัปเดตตัวเลือกผลลัพธ์สำหรับฟิลด์จำนวนผลลัพธ์
*/
ฟังก์ชัน mymodule_update_8001(&$แซนด์บ็อกซ์) {
$allowed_values = [];
สำหรับ ($x = 1; $x < 16; $x++) {
$allowed_values[$x] = (สตริง) $x;
}
$allowed_values[50] = '50';
$allowed_values[75] = '75';
$allowed_values[100] = '100';
$old_config = FieldStorageConfig::load('block_content.field_result_count');
$new_config = $old_config->createDuplicate();
$new_config->ต้นฉบับ = $new_config;
$new_config->enforceIsNew(เท็จ);
$new_config
->setSetting('allowed_values', $allowed_values)
->บันทึก();
}
ดูเหมือนจะเพิ่มค่าใหม่ลงในฟิลด์ แต่เทอร์มินัลคายสิ่งนี้ออกมาเมื่อเรียกใช้การอัปเดตฐานข้อมูล:
> [คำเตือน] ยืนยัน (): ไม่สามารถโหลดเอนทิตี "field_storage_config" ด้วย NULL ID ล้มเหลว EntityStorageBase.php:249
> [คำเตือน] array_flip(): สามารถพลิกค่า STRING และ INTEGER ได้เท่านั้น! EntityStorageBase.php:266
นี่เป็นวิธีที่เหมาะสมในการอัปเดตฟิลด์ที่มีอยู่หรือไม่