logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll
19/06/2025, by Ivan

Die Datenbankebene von Drupal basiert auf der PHP-PDO-Bibliothek. PDO bietet eine einheitliche objektorientierte API für den Zugriff auf verschiedene Datenbanken, abstrahiert jedoch nicht die unterschiedlichen SQL-Dialekte, die von verschiedenen Datenbanken verwendet werden.

Treiber

Da verschiedene Datenbanken unterschiedliche Arten der Interaktion benötigen, erfordert die Drupal-Datenbankebene für jeden Datenbanktyp einen Treiber. Ein Treiber besteht aus einer Reihe von Dateien, die sich im Verzeichnis include/database/driver befinden, wobei driver eine Zeichenkette ist, die einen eindeutigen Schlüssel für diesen Treiber repräsentiert. In den meisten Fällen ist der Treiberschlüssel die Kleinbuchstabenversion des Datenbanknamens, z. B. „mysql“, „pgsql“ oder „mycustomdriver“.

Jeder Treiber besteht aus mehreren Klassen, die von Basisklassen des Datenbanksystems abgeleitet sind. Diese treiberspezifischen Klassen können jegliches Verhalten überschreiben, das notwendig ist, um diesen Datenbanktyp korrekt zu unterstützen. Die treiberspezifischen Klassen heißen immer nach ihrer Basisklasse, gefolgt von einem Unterstrich und dem Treibernamen. Zum Beispiel heißt die treiberspezifische MySQL-Version von InsertQuery „InsertQuery_mysql“.

Verbindungen

Eine Verbindung ist ein Objekt der Klasse DatabaseConnection, die von der Klasse PDO erbt. Für jede Datenbank, mit der Drupal verbunden ist, gibt es ein Verbindungsobjekt. Dieses Verbindungsobjekt wird in Unterklassen für jeden einzelnen Treiber aufgeteilt.

Um auf das Verbindungsobjekt zuzugreifen (und es bei Bedarf zu öffnen), verwenden Sie:

$database = \Drupal::database();
// Oder
$database = \Drupal::service('database');

Falls Services noch nicht verfügbar sind, kann \Drupal\Core\Database\Database::getConnection() verwendet werden, um die Datenbankverbindung zu erhalten.

Weitere Informationen zu Ziel und Verbindungsschlüssel finden Sie auf der Dokumentationsseite zur Datenbankkonfiguration.

Um auf die aktuell aktive Verbindung zuzugreifen, verwenden Sie:

$conn =  \Drupal\Core\Database\Database::getConnection();

Dies holt die Standardverbindung für die aktive Verbindung.

Beachten Sie, dass Sie in den allermeisten Fällen nicht direkt das Verbindungsobjekt anfordern müssen. Stattdessen erledigen prozedurale Wrapper dies für Sie. Der einzige Grund, direkt auf das Verbindungsobjekt zuzugreifen, besteht darin, wenn Sie komplexe Manipulationen mit mehreren Datenbanken durchführen und die aktive Datenbank nicht wechseln möchten.

Um eine aktive Verbindung einzustellen, verwenden Sie:

$conn = \Drupal\Core\Database\Database::setActiveConnection('external');

Siehe den folgenden Abschnitt Datenbankkonfiguration für detaillierte Informationen zu Verbindungsschlüsseln und Zielen.

Abfragen

Eine Abfrage ist ein SQL-Befehl, der an eine Datenbankverbindung gesendet wird. Das Datenbanksystem unterstützt sechs Arten von Abfragen: statisch, dynamisch, Einfügen, Aktualisieren, Löschen und Zusammenführen. Einige Abfragen werden als SQL-String-Templates (prepared statements) geschrieben, andere verwenden objektorientierte Abfrage-Builder. „Abfrageobjekt“ bezeichnet eine Instanz eines Query Builders eines der verschiedenen Abfragetypen.

Statements

Das Statement-Objekt ist das Ergebnis einer Select-Abfrage. Es ist immer vom Typ DatabaseStatement oder einer Unterklasse davon. DatabaseStatement erweitert die Klasse PDOStatement.

Drupal verwendet für alle Abfragen vorbereitete Statements. Ein Prepared Statement ist eine Abfragevorlage, in die Werte für die Ausführung eingefügt werden. Man kann sich ein Prepared Statement als SQL-Funktion vorstellen, die mit Parametern aufgerufen wird.

Im normalen PDO muss ein Statement-Objekt explizit vorbereitet und mit Werten für die Platzhalter ausgeführt werden. Anschließend kann das Statement als Resultatset mehrfach wiederholt verwendet werden. Tatsächlich sind Statement und Resultatset Synonyme, allerdings erst nach der Ausführung des Statements.

Drupal gibt das Prepared Statement nicht direkt frei. Stattdessen verwendet der Modulentwickler ein Abfrageobjekt oder eine einmalige SQL-Zeichenkette zur Ausführung, und das Statement-Objekt dieser Abfrage wird zurückgegeben. Daher sind die Begriffe „Statement-Objekt“ und „Resultatset-Objekt“ mehr oder weniger synonym.

Source URL:
Source authors:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.