x

Huvudkapitel

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Snabbstartsguide - LimeSurvey 3.0+
  3. Installation - LimeSurvey CE
  4. Så utformar du en bra enkät (guide)
  5. Komma igång
  6. Administrera LimeSurvey
  7. Enkäter - introduktion
  8. Enkätinställningar
  9. Enkätmeny
  10. Enkätens struktur
  11. Frågor - introduktion
  12. Frågegrupper - introduktion
  13. Enkäter - hantering
  14. Alternativ i enkätverktygsfältet
  15. Flerspråkig enkät
  16. ExpressionScript-motorn – Snabbstartsguide
  17. Okategoriserade och avancerade funktioner
  18. FAQ
  19. Felsökning
  20. Lösningar och genvägar
  21. Licens
  22. Ändringslogg för versioner
  23. Plugins
 Actions

LimeSurvey 7 Omstrukturering av fältnamn

From LimeSurvey Manual

Den här sidan kan ha maskinöversatts och kan innehålla fel. Visa det engelska originalet · Förbättra den här översättningen
This page is a translated version of the page LimeSurvey 7 Fieldname Refactor and the translation is 100% complete.

Omstrukturering av fältnamn och svarstabeller - LimeSurvey 7

LimeSurvey 7 innebär en stor uppstädning av hur svarstabeller och fältnamn genereras. Uppdateringen moderniserar gamla interna namnkonventioner och skapar en mer förutsägbar och robust grund för plugin, integrationer och framtida utveckling.

Den här sidan handlar om omstruktureringen av svarstabeller och fältnamn.

Eftersom det här är en strukturell förändring kan anpassade lösningar som bygger på den gamla namngivningen behöva uppdateras. Den här sidan förklarar vad som ändras, hur du testar på ett säkert sätt och hur du förbereder dig inför uppgraderingen.

1. Vad som ändras

1.1 Nya tabellnamn

LimeSurvey använder nu ett enhetligt namnschema för svarsrelaterade tabeller.

Gammalt tabellnamn Nytt tabellnamn
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-frågor, integrationer eller plugin som refererar till dessa tabeller kan behöva justeras.

1.2 Ny struktur för fältnamn

Fältnamn följer nu ett förutsägbart och enhetligt format. Exempel:

  • Q<questionId> - huvudfråga
  • Q<questionId>_S<subquestionId> - delfrågor
  • Q<questionId>_C<suffix> - kommentar eller andra fält
  • rangordningsfält: Q<questionId>_S<subquestionId> - rangordningsobjekt är nu delfrågor (se 1.3)
  • tidtagningsfält: på fråge- eller gruppnivå beroende på sammanhang

Detta ersätter den äldre namngivningen baserad på sidXgidXqid.

1.3 Rangordningsfrågor

Rangordningsfrågor fungerar nu som andra frågetyper som bygger på delfrågor:

  • Objekten är delfrågor. Objekt som kan rangordnas lagras som delfrågor (typ R), inte som Alternativ för svar.
  • Fältnamn använder standardformatet för delfrågor Q<questionId>_S<subquestionId> (ett per rangordnat objekt).
  • Svar lagras i en enda JSON-kolumn Q<questionId>, som en ordnad samling av objektkoder där position = rangordning. Exempel: ["3", "1", "2"]

2. Varför detta är viktigt

Uppstädningen åtgärdar namngivningsmönster som definierades formellt och användes under många år, och ger dem en enhetlig och robust struktur som vi kan bygga vidare på i framtiden.

Strukturella förändringar som denna är sällan enkla. De berör delar av systemet som många plugin och integrationer är beroende av, vilket är anledningen till att de ofta skjuts upp på grund av sin komplexitet. Men att hålla saker enhetliga och förutsägbara är viktigt för stabiliteten på lång sikt.

Genom att ta tag i detta nu gör vi LimeSurvey renare och enklare att utöka, även om förändringen mestadels är osynlig på ytan.

3. Så förhandsvisar du nya fältnamn

För att se hur ett befintligt fältnamn motsvaras i den nya LS7-strukturen kan du utföra följande steg:

  1. Ta en säkerhetskopia av databasen, eftersom ändringarna inte kan ångras och det är bra att ha databasen från före ändringen att återställa om något går fel
  2. Checka ut grenen develop-major:
    git checkout develop-major
    eller klona/ladda ner projektet direkt från den grenen på https://github.com/LimeSurvey/LimeSurvey/tree/develop-major
  3. Läs in en adminsida för att starta ändringsskriptet
  4. Rapportera eventuella fel som uppstår när ändringsskriptet körs
  5. Studera de nya tabellnamnen och fältnamnen
  6. Testa dina plugin/teman och åtgärda fel som rör tabellnamn och/eller fältnamn

Funktionen som används för att konvertera gamla fältnamn till nya fältnamn är följande:

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

Parametrar

  • $tableName - ursprungligt tabellnamn
  • $fieldName - ursprungligt fältnamn
  • $questions - huvudfråga och dess delfrågor
  • $sid - enkätens ID
  • $gid - Grupp-ID
  • $cd - om logiken för Villkorsdesigner ska tillämpas

Resultat

Funktionen returnerar det nya LS7-fältnamnet för det svarsfältet.

4. Så testar du ändringarna på ett säkert sätt

Det rekommenderas starkt att du testar LS7 i en dedikerad miljö innan du uppgraderar produktionssystem.

4.1 Installera LS7 i en separat miljö

Ladda ner den senaste LS7 från:

https://community.limesurvey.org

Installera den separat från din nuvarande installation.

4.2 Importera dina befintliga resurser

Testa med:

  • enkäter
  • Undersökningsteman
  • Administratörsteman
  • Frågeteman
  • plugins
  • egen JavaScript
  • eventuella egna integrationer som du har byggt

Kontrollera att allt fungerar som förväntat med de nya namnen på tabeller och fält. Uppdatera all kod som bygger på de gamla namnen.

4.3 Så startar du migreringen

Om du vill förhandsgranska migreringslogiken i din testinstallation:

  1. Säkerhetskopiera din databas.
  2. Installera LS7-versionen.
  3. Läs in valfri administratörssida för att köra migreringsskriptet.
  4. Granska ändringarna av tabell- och fältnamn.
  5. Testa applikationen.
  6. Uppdatera egen kod vid behov.

4.4 Rapportera problem

Tack för att du testar detta i ett tidigt skede. Om du upptäcker något som ser fel ut i kärnan, rapportera det så att vi kan åtgärda det så snart som möjligt.

https://bugs.limesurvey.org

5. Vad som kan behöva uppdateras

Följande kan behöva justeras:

  • plugins som refererar till gamla fältnamn eller tabellnamn
  • eventuella egna integrationer som du har byggt
  • JavaScript som använder fältnamnsbaserade selektorer
  • egna teman som interagerar med identifierare kopplade till svar
  • integrationer som är beroende av det föregående namnschemat
  • import av gamla exporter, till exempel enkäter, teman, Frågeteman med mera.

Detta är förväntat och en del av uppgraderingsprocessen.

6. Sammanfattning

  • LS7 innebär en fullständig uppstädning av namngivningen av svarstabeller och fältnamn
  • Detta är den viktigaste strukturella ändringen i backend för LS7
  • Det rekommenderas starkt att testa i en separat miljö
  • getFieldName() hjälper dig att förhandsvisa den framtida namngivningen
  • Uppdatera egen kod där det behövs
  • Rapportera problem tidigt för att hjälpa till att stabilisera den slutliga versionen