Score:0

วิธีลบฟิลด์อย่างสมบูรณ์

ธง sa

ฉันได้ลบฟิลด์ออกจากกลุ่ม (ไม่ได้ใช้ที่อื่น) โดยใช้ UI แบบกราฟิก

แต่มันยังคงอยู่เมื่อฉันเรียกใช้คำสั่งต่อไปนี้ (หลังจากล้างแคช)

$this->entityFieldManager->getFieldDefinitions('โหนด', $bundle); 

ฉันควรทำอย่างไรเพื่อลบออกทั้งหมด (เนื่องจากฉันใช้คำสั่งก่อนหน้าเพื่อแสดงรายการบางส่วน)

แก้ไขเพื่อเพิ่ม:

ตามข้อเสนอของ Clive ฉันวิ่ง field_cron() ปราศจากความสำเร็จ. เมื่อดูโค้ดของฟังก์ชันนี้ ฉันลองใช้โค้ดต่อไปนี้เพื่อดูข้อมูลเพิ่มเติม:

$deleted_fields_repository = \Drupal::service('entity_field.deleted_fields_repository');
$fields = $deleted_fields_repository->getFieldDefinitions(โมฆะ);

อย่างที่คุณจินตนาการได้ $ฟิลด์ มันว่างเปล่า. อาจมีการทุจริตบ้าง?

แก้ไขเพื่อเพิ่ม 2

ตามข้อเสนอของ 4k4 ฉันใช้รหัสนี้:

$field_storage = \Drupal\field\Entity\FieldStorageConfig::loadByName('node', 'the_field_that_must_be_deleted');
dpm($field_storage->get('perist_with_no_fields'));

และผลลัพธ์ก็คือ เท็จ

ดังนั้นคำถามคือจะลบฟิลด์ด้วยตนเองได้อย่างไร

4uk4 avatar
cn flag
อาจเป็นไปได้ว่าที่เก็บข้อมูลฟิลด์ถูกทำเครื่องหมายว่าคงอยู่_กับ_no_fields ซึ่งหมายความว่าควรคงอยู่แม้ว่าจะไม่ได้ใช้ในชุดข้อมูลใดๆ อีกต่อไป
Baud avatar
sa flag
@ 4k4: ฉันได้อัปเดตคำถามของฉันแล้ว: ดูเหมือนว่าจะไม่เป็นเช่นนั้น
Score:0
ธง cn

โดยปกติแล้วคุณจะเรียกใช้ cron สำหรับสิ่งนี้เพราะ field_cron() ล้างข้อมูลที่ถูกลบ

หากคุณจำเป็นต้องทำด้วยตนเองไม่ว่าจะด้วยเหตุผลใดก็ตาม คุณสามารถโทร field_purge_batch() ด้วยตนเอง

Baud avatar
sa flag
ขอขอบคุณ. ดูเหมือนว่าจะเป็นคำตอบที่ถูกต้อง แต่ไม่มีประโยชน์ในกรณีของฉัน ฉันได้อัปเดตคำถามของฉันแล้ว

โพสต์คำตอบ

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