Score: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['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();

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา