Score:0

ฉันจะอัปเดตวันที่โหนดสำหรับโหนดทั้งหมดได้อย่างไร

ธง cn

ฉันได้นำเข้าโหนดจำนวนหนึ่งไปยัง Drupal 9 ที่ติดตั้งใหม่ ต่อมา วันที่สร้างเนื้อหาดั้งเดิม (จากเว็บไซต์ก่อนหน้า) กลายเป็นสิ่งสำคัญ

ฉันมีข้อมูลตามรหัสโหนดใหม่ ไม่รู้จะอัพตอนไหน?

ฉันพยายามอัปเดตคอลัมน์ที่สร้างและเปลี่ยนแปลงในตาราง node_field_data แล้ว แต่ในรายการเนื้อหา ฉันยังคงเห็นวันที่นำเข้า... ฉันควรดูที่ใด (แน่นอนว่าฉันเปิดรับข้อเสนอแนะเกี่ยวกับโมดูล เคล็ดลับในอินเทอร์เฟซการดูแลระบบ ฯลฯ ฉันคิดว่าการอัปเดตตาราง sql จะง่ายกว่า)

Score:0
ธง in

ก่อนอื่น ฉันจะหลีกเลี่ยงการอัพเดตฐานข้อมูลโดยตรงสำหรับเอนทิตีให้มากที่สุด โมเดลเอนทิตีของ 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(); }'

ขอให้โชคดี!

loker avatar
cn flag
ขอบคุณสำหรับคำตอบที่ละเอียดและอธิบายอย่างดีของคุณ ทำงานเหมือนจับใจ และฉันก็มีวิธีใหม่ๆ...

โพสต์คำตอบ

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