IT-MÜCKE

Xataface: Views nutzen

Beitragsdatum 11.01.2024
Letzte Aktualisierung -
Betrifft xataface, div. Versionen

Xataface ist ein Framework, um schnell und einfach komplexe Datenbankanwendungen bauen zu können.

Views nutzen

MySQL bietet sogenannte Views an. Damit lassen sich komplexe Abfragen einer Datenbank einmalig als eine Art Alias generieren, die Nutzenden damit wie eine normale Tabelle zur Verfügung stehen.

Anders ausgedrückt: mit einer View kann man eine dynamische Tabelle generieren und so die Daten so darstellen, wie man das möchte.

Auch Xataface kann mit Views arbeiten.

View einrichten in MySQL

Eine View wird in der Datenbank eingerichtet: dev.mysql.com

Beispiel

# Tabelle erstellen
CREATE TABLE tabelle (name VARCHAR(30), vorname VARCHAR(30), anzahl INT, preis INT);

# Daten eingeben
INSERT INTO tabelle VALUES("Musterfrau", "Petra", 5, 10), ("Schmitt", "Anton", 4, 12);

# Tabelle ausgeben
 SELECT * FROM tabelle;
+------------+---------+--------+-------+
| name       | vorname | anzahl | preis |
+------------+---------+--------+-------+
| Musterfrau | Petra   |      5 |    10 |
| Schmitt    | Anton   |      4 |    12 |
+------------+---------+--------+-------+

# View einrichten
CREATE VIEW ansicht AS SELECT name, anzahl, preis, anzahl*preis AS kosten FROM tabelle;

# View ausgeben
SELECT * FROM ansicht;
+------------+--------+-------+--------+
| name       | anzahl | preis | kosten |
+------------+--------+-------+--------+
| Musterfrau |      5 |    10 |     50 |
| Schmitt    |      4 |    12 |     48 |
+------------+--------+-------+--------+

Diese View zeigt also eine Untermenge der Daten aus der Tabelle an und berechnet eine neue Spalte.

Diese View möchten wir nun in Xataface anzeigen können.

View nutzen in Xataface

Die View wird in Xataface genauso behandelt, wie eine Tabelle. Daher muss als erstes ein entsprechendes Verzeichnis angelegt werden:

mkdir tables/ansicht

Nun wird die fields.ini angelegt und befüllt:

vim tables/ansicht/fields.ini

# einfügen
[name]
Key=PRI

Die Angabe Key=PRI ist wichtig, damit Xataface weiß, welche Spalte als Primary Key genutzt werden soll. In der Realität ist die Nutzung von name ein schlechter Schlüssel, da sich der Name wiederholen könnte. Hier kann beispielsweise zusätzlich in die View einfach der bestehende Primary Key aus der Quelltabelle genutzt werden.

Die View (aus Sicht von Xataface handelt es sich um eine Tabelle) ist in der conf.ini anzulegen:

[_tables]
tabelle = "Tabelle"
ansicht = "Ansicht"

Und damit ist die View als Tabelle sicht- und nutzbar in Xataface.

optional: READ ONLY setzten

Änderungen an den Daten in der View führen zu Änderungen an den Daten in der (Original-)Quelle. Soll das verhindert werden, kann die gesamte View auf READ ONLY gesetzt werden. Das wird in der Tabellen-Klasse umgesetzt:

# File: tables/ansicht/ansicht.php

<?php
class tables_ansicht {
[...]
        function getPermissions(Dataface_Record $record = null){
                return Dataface_PermissionsTool::READ_ONLY();
        }
[...]
}

Achtung: mögliche Seiteneffekte

Werden Rollen auf diese Weise generell einer Ansicht/Tabelle zugeordnet, überschreibt die hier eingestellte Rolle auf dieser Ansicht/Tabelle die Rolle, mit der der Benutzer angemeldet ist.

Das kann dazu führen, dass Actions (siehe Xataface Definitive Guide) , die über eine sogenannte permission gesteuert werden, nicht mehr erwartungsgemäß funktionieren. Nämlich genau dann, wenn die Ansicht/Tabelle geöffnet ist und damit die Rolle des Nutzers überschrieben wurde.

Actions, die der Nutzer sehen sollte, sind dann nicht mehr sichtbar. Erst, wenn er eine andere Tabelle/Ansicht öffnet (ohne Rolleneinschränkung), werden die Actions wieder sichtbar.


Quellen:


Ähnliche Themen im blog:
xataface, sql


zurück