Seit dem Release 1.11 ist ein Update-Tool für den Generischer O/R-Mapper verfügbar, das die Änderungen an den Konfigurations-Dateien auf eine vorhandene Datenbank anwendet.
Sofern kein automatisiertes Update gewüscht ist, bietet die Klasse GenericORMapperUpdate zudem die Möglichkeit, die Update-Statements für eine manuelle Anwendung auszugeben. Für große Datenbanken wird ohnehin ein manuelles Update empfohlen, insbesondern wenn Indizes oder Spalten erzeut oder entfernt werden!
Das folgende Skript zeigt, wie ein Datenbank-Update mit Hilfe des GenericORMapperUpdate automatisiert vorgenommen werden kann. Eine Vorlage für dieses Skript befindet sich zudem im Ordner /apps/modules/genericormapper/data/tools des jeweiligen apf-codepack-* Releases und trägt den Namen update.php. Dieses muss gemäß den Bemerkungen unterhalb der Codebox für den entstprechenden Anwendungsfall angepasst werden. Hier das Setup-Skript im Überblick:
// include page controller
require('../../apps/core/pagecontroller/pagecontroller.php');
// configure the registry if desired
$reg = &Singleton::getInstance('Registry');
$reg->register('apf::core','Environment','{ENVIRONMENT}');
// include SetupMapper
import('modules::genericormapper::data::tools','GenericORMapperUpdate');
// create update tool
$updateMapper = new GenericORMapperUpdate();
// set Context (important for the configuration files!)
$updateMapper->set('Context','{CONTEXT}');
// adapt storage engine (default is MyISAM)
$updateMapper->set('StorageEngine','MyISAM|INNODB');
// update database layout
$updateMapper->updateDatabase('{CONFIG_NAMESPACE}','{CONFIG_NAME_AFFIX}','{CONNECTION_NAME}');
// display statements only
$updateMapper->updateDatabase('{CONFIG_NAMESPACE}','{CONFIG_NAME_AFFIX}','{CONNECTION_NAME}',false);Die eingesetzten Platzhalter haben folgende Bedeutung:
Weiterhin ist wichtig, dass die zu aktualisierende Datenbank bereits existiert und der in der Verbindungskonfiguration aufgeführte Benutzer CREATE TABLE-, ALTER TABLE- und, falls gewünscht, ALTER INDEX-Rechte für diese besitzt. Wird nach der Ausführung des Codes kein Fehler angezeigt, wurde das Setup erfolgreich abgeschlossen. Das Ergebnis kann dann beispielsweise mit phpMyAdmin oder dem MySQLAdmin überprüft werden.