Blog
Arbeiten mit der Datenbank in Drupal 7 - Lektion 1 - Drupal DB API
Wenn Sie Module für die 6. Version von Drupal geschrieben haben, wird es Ihnen nicht schwerfallen, auf die neue Database API von Drupal 7 umzusteigen. Die neue DB API basiert auf der PHP PDO-Erweiterung, was ihr die Fähigkeit gibt, mit verschiedenen Datenbanken wie MySQL, PostgreSQL, MSSQL und möglicherweise Oracle zu arbeiten. Was die Einfachheit betrifft, ist es schwierig zu sagen, da man sich an die neue Syntax gewöhnen muss; das Schreiben von SQL-Anfragen ist wesentlich vertrauter.
Arbeiten mit der Datenbank in Drupal 7 – Lektion 2 – Datenbank-Konfiguration
Das Hauptmittel zur Definition der Verbindung mit der Datenbank ist das Array $databases
in der Datei settings.php
. Wie der Name schon sagt, erlaubt $databases
die Definition mehrerer Datenbankverbindungen. Es unterstützt auch die Definition mehrerer Ziele. Die Verbindung wird nicht geöffnet (das Verbindungsobjekt wird nicht erstellt), bis ein Teil des Codes zum ersten Mal eine Anfrage an die Datenbank ausführt.
Datenbankarbeit in Drupal 7 – Lektion 3 – Statische Abfragen (SELECT)
Die allgemeinste Form einer Abfrage in Drupal ist die statische Abfrage. Eine statische Abfrage wird wortwörtlich an die Datenbank übergeben. Nur SELECT-Abfragen können statisch sein.
Statische Abfragen sollten nur bei sehr einfachen Anfragen verwendet werden. Für komplexe, dynamisch erstellte oder zur Laufzeit modifizierte Abfragen sollten Sie dynamische Abfragen verwenden.
Ein einfacher Weg, eine statische Abfrage durchzuführen, ist über die Query-Methode:
Datenbankabfragen in Drupal 7 – Lektion 4 – Dynamische Abfragen (SELECT)
Wir sind wohl zur interessantesten Komponente der Drupal Database API gelangt: den dynamischen Abfragen. Dynamische Abfragen heißen so, weil Drupal die Abfragezeichenkette dynamisch ergänzt. Alle Einfüge-, Update-, Lösch- oder Merge-Abfragen können dynamisch sein. SELECT-Abfragen können dynamisch oder statisch sein. Dennoch sollten dynamische Abfragen auch für SELECT-Anfragen verwendet werden.
Arbeiten mit der Datenbank in Drupal 7 – Lektion 5 – Extenders (Erweiterungen)
Abfrageauswahl unterstützt Erweiterungen (Extenders). Eine Erweiterung ermöglicht es, zur Laufzeit zusätzliche Funktionalität zu einer Abfrage hinzuzufügen. Diese Funktionalität kann eine zusätzliche Methode sein oder das Verhalten einer existierenden Methode verändern.
Dafür werden in der OOP Design-Patterns verwendet; Erweiterungen implementieren dabei das Decorator-Pattern. Sie fügen dem dynamischen Objekt zusätzliche Aufgaben hinzu, indem sie flexible alternative Subklassen für die Erweiterungsmethode bereitstellen.
Arbeiten mit der Datenbank in Drupal 7 – Lektion 6 – Laufende Änderung von Abfragen (hook_query_alter)
Eine wichtige Eigenschaft dynamischer Select-Abfragen ist die Möglichkeit für andere Module, Abfragen zur Laufzeit zu verändern. Dies erlaubt anderen Modulen, eigene Anweisungen in die Abfrage einzufügen, wodurch das Verhalten der Abfrage beeinflusst oder zur Laufzeit Änderungen vorgenommen werden können, beispielsweise um Zugriffsbeschränkungen für Nodes zu setzen. Es gibt drei Komponenten für die Laufzeitänderung von Abfragen: Tagging, Metadaten und hook_query_alter().
Arbeiten mit der Datenbank in Drupal 7 – Lektion 7 – Verarbeitung von Abfrageergebnissen (fetch)
Eine Abfrage zur Auswahl gibt immer das Ergebnis der Abfrageverarbeitung zurück, das 0 oder mehr Datensätze enthält. Es gibt mehrere Möglichkeiten, die Ergebnisse der Abfrage zu verarbeiten, die Sie nach Belieben verwenden können.
Am häufigsten werden die Ergebnisse in einer foreach()-Schleife verwendet.
Arbeiten mit der Datenbank in Drupal 7 – Lektion 8 – Einfüge-Abfragen (INSERT INTO)
Einfüge-Abfragen sollten immer den Query-Builder verwenden. Manche Datenbanken benötigen spezielle Handler für LOBs (Large OBjects, wie TEXT in MySQL) und BLOB-Felder (Binary Large OBjects), daher ist eine Abstraktionsschicht notwendig, damit individuelle DB-Treiber diese behandeln können.
Einfüge-Abfragen beginnen mit der Funktion db_insert()
:
Arbeiten mit der Datenbank in Drupal 7 – Lektion 9 – Update-Abfragen (UPDATE)
Update-Abfragen sollten immer den Query-Builder verwenden. Unterschiedliche Datenbanken haben spezifische Handler für LOBs (Large OBjects, z. B. TEXT in MySQL) und BLOB-Felder (Binary Large OBjects), daher ist eine Abstraktionsschicht für die individuellen Treiber notwendig, um die spezifischen Handler zu implementieren.
Update-Abfragen beginnen mit der Funktion db_update()
:
Arbeiten mit der Datenbank in Drupal 7 – Lektion 10 – Löschabfragen (DELETE)
Löschabfragen sollten mit dem Query-Builder durchgeführt werden. Sie beginnen mit der Funktion db_delete()
: