views

Drupal 7 Datenbank-Abfragen mit EntityFieldQuery

Eine wertvolle Neuerung aus Drupal 7 ist die EntityFieldQuery API. Hiermit können programmatische Inhalts-Abfragen über jede definierte Entität getätigt werden. Wollte man in Drupal 6 programmatisch eine Datenbankabfrage über bestimmte CCK-Felder machen, empfahl es sich aus Kompatibilitätsgründen mit Views eine Abfrage zu erstellen, diesen dann im Code zu laden und auszuführen. So war sichergestellt, dass kein Update am CCK Modul oder Veränderungen an der Datenstruktur zu Kompatibilitätsproblemen mit dem eigenen db_query()-Call führten. EntityFieldQuery ist eine alternative und deutlich bessere Abstraktionsschicht für diesen Anwendungsfall, denn es ist eine Drupal 7 Core Funktionalität und kein Modul in dessen Abhängigkeit man sich begibt, es arbeitet für simple Calls deutlich performanter als Views und es kann extrem flexibel eingesetzt und sogar um eigene Methoden erweitert werden. Die Fähigkeiten und Performance dieser API gehen soweit, dass es zu einer Grundüberlegung gemacht werden sollte, ob man für eine Darstellung von Inhalt das Views Modul oder doch lieber ein eigenes Modul mit EntityFieldQuery nutzen sollte.

Drupal Module programmieren - Datenbankabfragen mit Views

Das Views-Modul für Datenbankabfragen zu verwenden kann einige Vorteile haben. Die Datenbankstrukturen in einer Drupal Installation sind nicht immer besonders beständig. Das CCK Modul beispielsweise erstellt oft sehr komische Querverweise und generiert neue Spalten in bereits bestehenden Tabellen. Eine Datenbankabfrage dafür selber zu erstellen wird wahrscheinlich dazu führen, das beim nächsten CCK Update nichts mehr funktioniert. Die Views API hingegen meistert so etwas tadellos. Aber genug um den heißen Brei herum geredet. Hier eine kurze Anleitung, wie es geht: