ก่อนอื่น ฉันจะหลีกเลี่ยงการอัพเดตฐานข้อมูลโดยตรงสำหรับเอนทิตีให้มากที่สุด โมเดลเอนทิตีของ Drupal 8+ นั้นเชื่อมโยงกับชั้นสิ่งที่เป็นนามธรรมอย่างแน่นหนา โดยนำมาใช้เป็นตะขอ ถือเป็นแนวทางปฏิบัติที่ดีที่สุดในการแก้ไขเอนทิตีเสมอผ่านทาง API เอนทิตี. สิ่งนี้จะช่วยให้ Drupal สามารถซิงค์ข้อมูลทั้งหมดได้
ตอนนี้ คำตอบสั้นๆ สำหรับคำถามของคุณก็คือ การล้างแคชของไซต์ของคุณอาจส่งผลให้ค่าใหม่แสดงขึ้น
คำตอบที่ดีกว่าคือการเขียนสคริปต์ PHP บางตัวเพื่อวนซ้ำผ่านโหนดทั้งหมดและอัปเดตวันที่สร้างเนื้อหาผ่าน API ของเอนทิตี ฉันมักจะใช้ Drush เพื่อดำเนินการประเภทนี้ ด้านล่างนี้คือตัวอย่างที่เหมาะกับความต้องการของคุณ ตามข้อสันนิษฐานต่อไปนี้:
- คุณได้โหลดค่า node:date ของคุณลงในอาร์เรย์ที่เรียกว่า
$new_node_dates
โดยที่คีย์คือ NID และค่าคือ การประทับเวลายูนิกซ์ แสดงถึงวันที่สร้างใหม่ ดูที่นี่ สำหรับตัวอย่างการอ่านไฟล์ CSV ลงในอาร์เรย์ หากวันที่ไม่ได้อยู่ในรูปแบบประทับเวลา Unix คุณสามารถใช้ สตริโตไทม์() เพื่อแปลง
คำสั่ง Drush จะเป็น:
drush eval '$node_storage = \Drupal::entityTypeManager()->getStorage("โหนด"); foreach ($new_node_dates เป็น $nid => $creation_date) { $node = $node_storage->load($nid); $node->created = $creation_date; $node->save(); }'
ขอให้โชคดี!