x

บทหลัก

  1. LimeSurvey Cloud เทียบกับ LimeSurvey CE
  2. คู่มือเริ่มต้นใช้งานฉบับย่อ - LimeSurvey 3.0+
  3. การติดตั้ง - LimeSurvey CE
  4. วิธีออกแบบแบบสำรวจที่ดี (คู่มือ)
  5. เริ่มต้นใช้งาน
  6. การดูแลระบบ LimeSurvey
  7. แบบสำรวจ - บทนำ
  8. การตั้งค่าแบบสอบถาม
  9. เมนูสำรวจ
  10. โครงสร้างการสำรวจ
  11. คำถาม - บทนำ
  12. กลุ่มคำถาม - บทนำ
  13. แบบสำรวจ - การจัดการ
  14. ตัวเลือกแถบเครื่องมือแบบสำรวจ
  15. แบบสำรวจหลายภาษา
  16. ExpressionScript Engine - คู่มือเริ่มต้นอย่างรวดเร็ว
  17. ฟีเจอร์ขั้นสูงและฟีเจอร์ที่ไม่ได้จัดหมวดหมู่
  18. คำถามที่พบบ่อยทั่วไป
  19. การแก้ไขปัญหา
  20. วิธีแก้ปัญหาชั่วคราว (Workarounds)
  21. สัญญาอนุญาต
  22. บันทึกการเปลี่ยนแปลงของเวอร์ชัน
  23. ปลั๊กอิน
 Actions

การปรับโครงสร้างชื่อฟิลด์ใน LimeSurvey 7

From LimeSurvey Manual

หน้านี้อาจแปลด้วยเครื่องและอาจมีข้อผิดพลาด ดูต้นฉบับภาษาอังกฤษ · ปรับปรุงคำแปลนี้
This page is a translated version of the page LimeSurvey 7 Fieldname Refactor and the translation is 100% complete.

การปรับโครงสร้างชื่อฟิลด์และตารางการตอบคำถาม - LimeSurvey 7

LimeSurvey 7 ปรับปรุงวิธีการสร้างตารางการตอบคำถามและชื่อฟิลด์ครั้งใหญ่ การอัปเดตนี้ปรับรูปแบบการตั้งชื่อภายในที่ใช้มายาวนานให้ทันสมัย และสร้างพื้นฐานที่คาดการณ์ได้และแข็งแกร่งยิ่งขึ้นสำหรับปลั๊กอิน การเชื่อมต่อระบบ และการพัฒนาในอนาคต

หน้านี้มุ่งเน้นที่การปรับโครงสร้างตารางการตอบคำถามและชื่อฟิลด์

เนื่องจากเป็นการเปลี่ยนแปลงเชิงโครงสร้าง งานที่พัฒนาขึ้นเองซึ่งอาศัยการตั้งชื่อแบบเดิมอาจต้องได้รับการอัปเดต หน้านี้อธิบายว่ามีอะไรเปลี่ยนแปลงบ้าง วิธีทดสอบอย่างปลอดภัย และวิธีเตรียมความพร้อมสำหรับการอัปเกรด

1. มีอะไรเปลี่ยนแปลงบ้าง

1.1 ชื่อตารางใหม่

ขณะนี้ LimeSurvey ใช้รูปแบบการตั้งชื่อที่สอดคล้องกันสำหรับตารางที่เกี่ยวข้องกับการตอบคำถาม

ชื่อตารางเดิม ชื่อตารางใหม่
old_survey_<sid>_<timestamp> old_responses_<sid>_<timestamp>
old_survey_<sid>_timings_<timestamp> old_timings_<sid>_<timestamp>
survey_<sid> responses_<sid>
survey_<sid>_timings timings_<sid>

คิวรี SQL การเชื่อมต่อระบบ หรือปลั๊กอินใด ๆ ที่อ้างอิงถึงตารางเหล่านี้อาจต้องได้รับการปรับแก้

1.2 โครงสร้างชื่อฟิลด์ใหม่

ขณะนี้ชื่อฟิลด์ใช้รูปแบบที่คาดการณ์ได้และสอดคล้องกัน ตัวอย่าง:

  • Q<questionId> - คำถามหลัก
  • Q<questionId>_S<subquestionId> - คำถามย่อย
  • Q<questionId>_C<suffix> - ความคิดเห็นหรือฟิลด์อื่น ๆ
  • ฟิลด์การจัดอันดับ: Q<questionId>_S<subquestionId> - รายการจัดอันดับเป็นคำถามย่อยแล้ว (ดูหัวข้อ 1.3)
  • ฟิลด์เวลา: ระดับคำถามหรือระดับกลุ่ม ขึ้นอยู่กับบริบท

สิ่งนี้มาแทนที่การตั้งชื่อแบบเดิมที่อิงตาม sidXgidXqid

1.3 คำถามแบบจัดอันดับ

ขณะนี้คำถามแบบจัดอันดับทำงานเหมือนประเภทคำถามอื่นที่อิงคำถามย่อย:

  • รายการเป็นคำถามย่อย รายการที่จัดอันดับได้จะถูกจัดเก็บเป็นคำถามย่อย (ประเภท R) ไม่ใช่ตัวเลือกของคำตอบ
  • ชื่อฟิลด์ ใช้รูปแบบคำถามย่อยมาตรฐาน Q<questionId>_S<subquestionId> (หนึ่งฟิลด์ต่อหนึ่งรายการที่จัดอันดับ)
  • การตอบคำถาม จะถูกจัดเก็บในคอลัมน์ JSON เดียวคือ Q<questionId> เป็นอาร์เรย์ของรหัสรายการที่เรียงลำดับ โดยตำแหน่ง = อันดับ ตัวอย่าง: ["3", "1", "2"]

2. เหตุใดเรื่องนี้จึงสำคัญ

การปรับปรุงนี้จัดการกับรูปแบบการตั้งชื่อที่ถูกกำหนดอย่างเป็นทางการและใช้งานมาหลายปี และนำมาปรับให้เป็นโครงสร้างที่สอดคล้องและแข็งแกร่ง เพื่อใช้เป็นฐานในการพัฒนาต่อไปในอนาคต

การเปลี่ยนแปลงเชิงโครงสร้างเช่นนี้แทบไม่เคยง่าย เพราะกระทบส่วนต่าง ๆ ของระบบที่ปลั๊กอินและการเชื่อมต่อระบบจำนวนมากพึ่งพาอยู่ จึงมักถูกเลื่อนออกไปเนื่องจากความซับซ้อน แต่การทำให้ทุกอย่างสอดคล้องและคาดการณ์ได้นั้นสำคัญต่อเสถียรภาพในระยะยาว

การดำเนินการในตอนนี้ทำให้ LimeSurvey สะอาดขึ้นและขยายต่อได้ง่ายขึ้น แม้ว่าการเปลี่ยนแปลงนี้จะแทบมองไม่เห็นจากภายนอกก็ตาม

3. วิธีดูตัวอย่างชื่อฟิลด์ใหม่

หากต้องการดูว่าชื่อฟิลด์เดิมใด ๆ จะถูกแมปไปยังโครงสร้าง LS7 ใหม่อย่างไร คุณสามารถทำตามขั้นตอนต่อไปนี้:

  1. ทำการสำรองฐานข้อมูล เนื่องจากการเปลี่ยนแปลงไม่สามารถย้อนกลับได้ และหากเกิดข้อผิดพลาด การมีฐานข้อมูลก่อนการเปลี่ยนแปลงจะช่วยให้กู้คืนได้
  2. เช็กเอาต์บรานช์ develop-major:
    git checkout develop-major
    หรือโคลน/ดาวน์โหลดโปรเจกต์โดยตรงที่บรานช์นี้ได้ที่ https://github.com/LimeSurvey/LimeSurvey/tree/develop-major
  3. โหลดหน้าผู้ดูแลระบบหน้าใดก็ได้เพื่อเรียกใช้สคริปต์การเปลี่ยนแปลง
  4. รายงานข้อผิดพลาดที่คุณอาจพบระหว่างการทำงานของสคริปต์การเปลี่ยนแปลง
  5. ศึกษาชื่อตารางและชื่อฟิลด์ใหม่
  6. ทดสอบปลั๊กอิน/ธีมของคุณ และแก้ไขข้อผิดพลาดที่เกี่ยวข้องกับชื่อตารางและ/หรือชื่อฟิลด์

ฟังก์ชันที่ใช้แปลงชื่อฟิลด์เดิมเป็นชื่อฟิลด์ใหม่มีดังนี้:

getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)

พารามิเตอร์

  • $tableName - ชื่อตารางเดิม
  • $fieldName - ชื่อฟิลด์เดิม
  • $questions - คำถามหลักและคำถามย่อยของคำถามนั้น
  • $sid - ID แบบสอบถาม
  • $gid - หมายของกลุ่ม
  • $cd - ระบุว่าใช้ตรรกะของตัวออกแบบเงื่อนไขหรือไม่

ผลลัพธ์

ฟังก์ชันจะส่งคืนชื่อฟิลด์ LS7 ใหม่สำหรับฟิลด์การตอบคำถามนั้น

4. วิธีทดสอบการเปลี่ยนแปลงอย่างปลอดภัย

ขอแนะนำอย่างยิ่งให้ทดสอบ LS7 ในสภาพแวดล้อมเฉพาะก่อนอัปเกรดระบบที่ใช้งานจริง

4.1 ติดตั้ง LS7 ในสภาพแวดล้อมแยกต่างหาก

ดาวน์โหลด LS7 เวอร์ชันล่าสุดจาก:

https://community.limesurvey.org

ติดตั้งแยกจากระบบปัจจุบันของคุณ

4.2 นำเข้าทรัพยากรที่มีอยู่ของคุณ

ทดสอบโดยใช้:

  • แบบสำรวจ
  • ธีมแบบสำรวจ
  • ธีมผู้ดูแลระบบ
  • ธีมคำถาม
  • ปลั๊กอิน
  • JavaScript ที่กำหนดเอง
  • การเชื่อมต่อระบบที่กำหนดเองที่คุณสร้างขึ้น

ตรวจสอบว่าทุกอย่างทำงานตามที่คาดไว้กับการตั้งชื่อตารางและชื่อฟิลด์แบบใหม่หรือไม่ อัปเดตโค้ดที่อาศัยการตั้งชื่อแบบเดิม

4.3 วิธีเรียกใช้การย้ายข้อมูล

หากต้องการดูตัวอย่างตรรกะการย้ายข้อมูลในระบบทดสอบของคุณ:

  1. สำรองข้อมูลฐานข้อมูลของคุณ
  2. ติดตั้ง LS7
  3. เปิดหน้าผู้ดูแลระบบหน้าใดก็ได้เพื่อรันสคริปต์การย้ายข้อมูล
  4. ตรวจสอบการเปลี่ยนแปลงของชื่อตารางและชื่อฟิลด์
  5. ทดสอบแอปพลิเคชัน
  6. อัปเดตโค้ดที่คุณปรับแต่งเองหากจำเป็น

4.4 รายงานปัญหา

ขอบคุณที่ช่วยทดสอบตั้งแต่เนิ่น ๆ หากคุณพบสิ่งที่ดูผิดปกติในส่วนแกนหลัก โปรดแจ้งให้เราทราบ เพื่อที่เราจะได้แก้ไขโดยเร็วที่สุด

https://bugs.limesurvey.org

5. สิ่งที่อาจต้องอัปเดต

สิ่งต่อไปนี้อาจต้องมีการปรับแก้:

  • ปลั๊กอินที่อ้างอิงชื่อฟิลด์หรือชื่อตารางแบบเดิม
  • การเชื่อมต่อที่คุณสร้างขึ้นเอง
  • JavaScript ที่ใช้ตัวเลือก (selector) ตามชื่อฟิลด์
  • ธีมที่คุณปรับแต่งเองซึ่งใช้งานร่วมกับตัวระบุที่เกี่ยวข้องกับการตอบคำถาม
  • การเชื่อมต่อที่ขึ้นอยู่กับรูปแบบการตั้งชื่อก่อนหน้า
  • การนำเข้าไฟล์ส่งออกเก่า เช่น แบบสำรวจ ธีม ธีมคำถาม เป็นต้น

เป็นเรื่องที่คาดการณ์ไว้แล้วและเป็นส่วนหนึ่งของกระบวนการอัปเกรด

6. สรุป

  • LS7 ปรับปรุงการตั้งชื่อตารางการตอบคำถามและชื่อฟิลด์ทั้งหมดใหม่
  • นี่เป็นการเปลี่ยนแปลงโครงสร้างฝั่งแบ็กเอนด์หลักของ LS7
  • ขอแนะนำอย่างยิ่งให้ทดสอบในสภาพแวดล้อมแยกต่างหาก
  • getFieldName() ช่วยให้ดูตัวอย่างการตั้งชื่อในอนาคตได้
  • อัปเดตโค้ดที่คุณปรับแต่งเองตามความจำเป็น
  • รายงานปัญหาตั้งแต่เนิ่น ๆ เพื่อช่วยให้รุ่นสุดท้ายมีเสถียรภาพ