Archive for the ‘Doctrine’ tag
Doctrine und Agavi
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.
<!-- Doctrine --> <autoload name="Doctrine">/path/to/project/libs/doctrine/Doctrine.php</autoload>
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!
<?xml version="1.0" encoding="UTF-8"?> <ae:configurations xmlns:ae="http://agavi.org/agavi/config/global/envelope/1.0" xmlns="http://agavi.org/agavi/config/parts/databases/1.0"> <ae:configuration> <databases default="doctrine"> <database name="doctrine" class="AgaviDoctrineDatabase"> <ae:parameters> <ae:parameter name="dsn">mysql://<username>:<password>@<host>/<databasename></ae:parameter> <ae:parameter name="attributes"> <ae:parameters> <ae:parameter name="AUTOLOAD_TABLE_CLASSES">true</ae:parameter> <ae:parameter name="VALIDATE">LENGTHS</ae:parameter> <ae:parameter name="AUTO_ACCESSOR_OVERRIDE">true</ae:parameter> </ae:parameters> </ae:parameter> <ae:parameter name="manager_attributes"> <ae:parameters> <ae:parameter name="model_loading">conservative</ae:parameter> </ae:parameters> </ae:parameter> <ae:parameter name="load_models">%core.lib_dir%/doctrine</ae:parameter> </ae:parameters> </database> </databases> </ae:configuration> </ae:configurations>
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!
<?php // Backup argv, otherwise stripped by agavi $args = $_SERVER['argv']; require('../../libs/agavi/agavi.php'); require('../../app/config.php'); Agavi::bootstrap('development.benjamin'); spl_autoload_register(array('Doctrine', 'autoload')); // Let Agavi create the connection $con = AgaviContext::getInstance('console')->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.