B. Boerngen-Schmidt

Die Summe der Kleinigkeiten ergibt das Ganze.

Archive for the ‘Doctrine’ tag

Doctrine und Agavi

without comments

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.

Geschrieben von Benjamin

22. April 2009 um 00:06

Geschrieben in Allgemeines

Tags: , ,