Doctrine Librarys
Als erstes sollte man sich die Librarys von Doctrine besorgen. Ich selber speichere alle externen librarys im Verzeichnis %project_dir%/libs ab.
svn co http://svn.doctrine-project.org/tags/1.1.0/lib/ libs/doctrine
nun haben wir schon einmal die Librarys im Verzeichnis %project_dir%/lib/doctrine.
Konfiguration in Agavi
Damit Agavi nun diese auch läd müssen sie zur autoload.xml hinzugefügt werden.
/path/to/project/libs/doctrine/Doctrine.php
Zum anderen sollte in settings.xml use_database auf true gesetzt werden, damit Agavi überhaupt zu Datenbanken verbindet. Als nächstes ist nun die database.xml an der Reihe. Die hier angegebene Konfiguration sollte immer an die eingenen Wünsche angepasst werden!
mysql://:@/
true
LENGTHS
true
conservative
%core.lib_dir%/doctrine
Entwicklungsumgebung
Hier habe ich mir angewöhnt die Sachen für die DB Entwicklung unter dev/db ab zuspeichern. Hier sollten folgende Verzeichnisse erstellt werden.
mkdir -p dev/db/{data,data/fixtures,data/sql,migrations,models,schema}
Zudem erzeugen wir in dev/db noch die Datei doctrine.php, welches wir zur Konfiguration der Doctrine CLI verweden werden. Auch hier gilt, bitte anpassen!
getDatabaseConnection();
$dir = dirname(__FILE__);
$config = array(
'data_fixtures_path' => AgaviConfig::get('doctrine.fixture_dir', $dir . '/data/fixtures'),
'models_path' => AgaviConfig::get('core.lib_dir') . '/doctrine',
'migrations_path' => AgaviConfig::get('doctrine.migration_dir', $dir . '/migrations'),
'sql_path' => AgaviConfig::get('doctrine.migration_dir', $dir . '/data/sql'),
'yaml_schema_path' => AgaviConfig::get('doctrine.schema_dir', $dir . '/schema/schema.yml'),
'generate_models_options' => array(
'suffix' => '.class.php'
)
);
// Configure Doctrine Cli
$cli = new Doctrine_Cli($config);
$cli->run($args);
?>
Kommen wir nun zur letzten kleine Hürde. Wir brauchen noch eine entsprechende Datei die uns die doctrine.php von oben aufruft. Diese platziere ich immer in dev/ und sie sieht so aus.
#!/usr/bin/env php
Noch ein abschließendes chmod +x doctrine und man kann los legen.