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 引擎 - 快速入門指南
  17. 未分類及進階功能
  18. 常見問題
  19. 疑難排解
  20. 應變方案
  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 - 群組 ID
  • $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
  • 與作答結果相關識別碼互動的自訂佈景主題
  • 依賴先前命名方式的整合
  • 匯入舊的匯出檔,例如問卷、佈景主題、問題佈景主題等

這是預期中的情況,也是升級流程的一部分。

6. 摘要

  • LS7 全面整理了回應表與欄位名稱的命名方式
  • 這是 LS7 主要的後端結構性變更
  • 強烈建議在獨立環境中進行測試
  • getFieldName() 可協助預覽未來的命名方式
  • 請視需要更新自訂程式碼
  • 請及早回報問題,以協助穩定正式版本