IT-MÜCKE

Xataface Relationships erklärt: 1 zu n

Beitragsdatum 13.11.2016
Letzte Aktualisierung
Betrifft Xataface, diverse Versionen

In diesem Beitrag erkläre ich die Umsetzung einer 1:n-Beziehung in Xataface als eine Art Tutorial.

Die offizielle Dokumentation fand ich teilweise etwas unübersichtlich und habe daher meine eigene Doku erstellt, die ich hier im Blog nun gerne auch Ihnen zur Verfügung stelle.

  • Relationships ermöglichen die Verknüpfung von Einträgen untereinander und erlauben 1:n oder n:n Beziehungen
  • Hier wird eine 1:n Beziehung erläutert
  • Beispiel:
    • Erstellung eines Tagebuchs („Journal“ genannt)
    • Je Journal-Eintrag soll ein Stichwort („Tag“ genannt) vergeben werden
    • Anhand der Stichworte soll später das Journal durchsuchbar sein
    • Jeder Journal-Eintrag wird mit genau einem Tag (Stichwort) versehen
    • Je Tag gibt es also mehrere Einträge
    • Je Eintrag gibt es nur einen Tag
  • In Xataface können Beziehungen auf unterschiedliche Arten und Weisen gelöst werden
  • Hier beschreibe ich eine Methode
  • Original-Xataface-Doku: xataface.com
  • Aufbau (fett markiert jeweils die für die relationship wichtigen Einträge):
    • Datenbank:
      • tbl_entry
        • entry_id
        • entry_tagsid
        • entry_text
        • entry_timestamp
      • tbl_tags
        • tags_id
        • tags_name
        • Tags_notiz
    • Xataface-Applikation:
      tbl_entry/:
        fields.ini
        valuelists.ini
      
      tbl_tags/:
        fields.ini
    • In tbl_entry/fields.ini wird das Feld, welches die ID der Tabelleneinträge in der Tabelle tbl_tags enthält, über ein vocabulary definert:
      [entry_tagsid]
      widget:label = "Tag"
      widget:type = select
      ; ### Definition als vocabulary - sonst würde hier nur die ID des Tags angezeigt werden:
      vocabulary = voc_tags
    • Das vocabulary wird in der Datei tbl_entry/valuelists.ini definiert:
      ; ### Der Name des vocabulary entspricht dem oben in der tbl_entry/fields.ini genannten vocabulary des Feldes tbl_entry.entry_tagsid:
      [voc_tags]
      __sql__ = "SELECT tags_id, tags_name FROM tbl_tags ORDER BY tags_name"
      
      ; ### Aufbau:
      __sql__ = "SELECT <feld partner tabelle>, <feld partner tabelle> FROM <partner tabelle> ORDER BY <feld partner tabelle>"
    • Als Ergebnis erhalten wir eine Tabelle für die Einträge
    • Je Eintrag wird ein Tag ausgeführt, nach dem die gesamte Tabelle gefiltert werden kann

Quellen:


Ähnliche Themen im blog:
xataface


zurück