TALON4 Framework

Dokumentation

Datenbankzugriff

 

Das Datenbank-Modul von Talon4 ist durchgehend objektorientiert.

 

Das Modul "DAL" stellt allgemeine Verbindungsklassen zur Verfügung und leitet die Funktionsaufrufe an ein Datenbank-spezifisches Paket weiter.
Da auch alle Datenbank-Abfragen objektorientiert formuliert werden, könnte die Abfrage auch ohne weiteres an einen Webservice weitergeleitet oder anderweitig verarbeitet werden.

 

Derzeit wird nur Mysql direkt von Talon4 unterstützt.

 

 

Alle Datenbankaktionen in Views oder Controllern werden über eine Transaktion-Klasse geleitet.
$dbalias ist Optional, falls nicht angegeben, wird das Alias "default" verwendet. Das Alias wird in der Konfiguration der Datenbank-Factory verwendet.

 

die Datenbank-Factory verwaltet alle Zugangsdaten.

 

WICHTIG: die Angabe des base64 erhöht die Sicherheit nur marginal - jeder mit Zugriff kann das Passwort entschüsseln. Dennoch sorgt es dafür das kein Klartextpasswort angezeigt wird, sollte es zu einer Exception oder einem anderen Fehler im Datenbank-Adapter kommen.

 

Zwischen Konfiguration und Transaktion sind keine anderen Aufrufe nötig. Die Transaktion regelt alles weitere.
$ta = TF::Get('TF.Dal.Transaction',$dbalias);
$ta->commit();

 

<?php
TF::addTau('
default.TF_Dal_DatabaseFactory.default: {
"driver" : "TF.Dal.Drivers.Mysql",
"name" : "dbname",
"server" : "localhost",
"user" : "dbuser",
"password" : "'.base64_encode('dbpw').'"
}
');?>

 

Daten abrufen

Wenn Daten abgerufen werden ist das Recordset über das Iterator-Interface abrufbar. $recordset ist jedoch kein Array.
WICHTIG: prepare hat keinen bezug zu prepared-Statements, die Methode initialisiert eine Query-Abfrage.

 

Die Funktion addCriteria akzeptiert vorgenerierte Kriterien oder Kriterienkombinationen oder generiert ein neues Kriterium anhand von 3 Parametern (Feld, Wert und Operator)
$recordset = $ta->prepare($table,'*')
->addCriteria('Field3',$value3,'=')
->addSort("Field",'asc')
->query();

foreach($recordset => $rec)
{
echo $rec['title'];
}

$recordset = $ta->prepare($table,'*')
$group = TF::Get('TF.Dal.CriteriaGroup','OR');
$group->addCriteria('Field3',$value3,'=');
$group->addCriteria('Field2',$value2,'<');
$recordset->addCriteria($group);

Daten ändern

Insert, Update und Delete-Statements werden direkt über das Transaction-Objekt zusammengesetzt.
<?php
$action = $ta->delete($table)->addCriteria($name,$value,'=');
$action->execute();

$action = $ta->insert($table)
->set('Field1',$value)
->set('Field2',$value2)
$action->execute();

$action = $ta->update($table)
->set('Field1',$value)
->set('Field2',$value2)
->addCriteria($name,$value,'=');
$action->execute();