Mammut Framework

Entwicklerhandbuch :: Database Abstraction Layer :: SQL-Builder

SQL-Builder

Die SQL-Builder-Hilfsklassen bieten eine Möglichkeit, SQL-Befehle einheitlich zu formulieren und durch das Framework in den jeweiligen Dialekt übersetzten zu lassen. Dies ermöglicht eine wesentlich höhere Portierbarkeit der Anwendungen bei relativ geringen Einschränkungen der Abfragemöglichkeiten.

Durch den entstehenden Zusatzaufwand auf dem Anwendungsserver sollte dies allerdings nicht für triviale Abfragen (SELECT * FROM tabelle) verwendet werden und wenn möglich die generierten Befehle bei mehrmaliger Verwendung gecached werden.

Die Hilfsklassen setzten auf das "method chaining"-Pattern, wodurch es mit relativ geringem Aufwand möglich ist, bekannte SQL-Ausdrücke in Code umzuwandeln.

Builderklassen

Für das Erstellen von SQL-Abfragen existieren im Namespace \Mammut\DB\Sql\ vier Klassen, um die entsprechenden Befehle zu modellieren:

Insert
Für Befehle ensprechend INSERT INTO ...
Select
Für Befehle ensprechend SELECT ...
Update
Für UPDATE ... SQL-Befehle
Delete
Für DELETE FROM .... SQL-Befehle

All diese Klassen implementieren das iSql-Interface, welches die Methode getSql() zum generieren des entsprechenden Ausdruck auf Basis eines SQL-Dialektes definiert.

Die meisten Datenbankmethoden wie query() oder getXYZList() können auch direkt Instanzen der Builderklassen verwenden, wobei hier NICHT geprüft wird, ob diese Kombination auch Sinn ergibt (z.B. Delete-Objekt in Verbindung mit getObjectList()).

Beispiel

$select = $db->select()->from('moduleinstances')->where([
   'site_id' => 1,
   'instance' => new Parameter()
]);
$modInstance = $db->getObjectP($select, ['home'], ModuleInstance::clazz());