Propelprojekt vorbereiten

Der propel Generator benötigt eine XML Datei um ein Datenbankschema zu erstellen. Diese heisst sinnigerweise dann auch schema.xml. Der Aufbau ist eigentlich selbsterklärend. Hier habe ich mal ein Beispiel von der propel Seite:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>

<database name="bookstore" defaultIdMethod="native">

 <table name="book" description="Book Table">
  <column name="book_id" type="integer" primaryKey="true" autoIncrement="true" required="true" description="Book Id"/>
  <column name="title" type="varchar" size="255" required="true" description="Book Title"/>
  <column name="isbn" type="varchar" size="24" required="true" phpName="ISBN" description="ISBN Number"/>
  <column name="publisher_id" type="integer" required="true" description="Foreign Key for Publisher"/>
  <column name="author_id" type="integer" required="true" description="Foreign Key for Author"/>
  <foreign-key foreignTable="publisher">
   <reference local="publisher_id" foreign="publisher_id"/>
  </foreign-key>
  <foreign-key foreignTable="author">
   <reference local="author_id" foreign="author_id"/>
  </foreign-key>
 </table>

 <table name="publisher" description="Publisher Table">
  <column name="publisher_id" type="integer" required="true" primaryKey="true" autoIncrement="true" description="Publisher Id"/>
  <column name="name" type="varchar" size="128" required="true" description="Publisher Name"/>
 </table>

 <table name="author" description="Author Table">
  <column name="author_id" type="integer" required="true" primaryKey="true" autoIncrement="true" description="Author Id"/>
  <column name="first_name" type="varchar" size="128" required="true" description="First Name"/>
  <column name="last_name" type="varchar" size="128" required="true" description="Last Name"/>
 </table>

</database>

Setzen der Build Konfiguration:
Um die Datenbank erstellen zu können braucht propel noch die Parameter für die Datenbankverbindung. Dafür erstellt man in seinem Projektverzeichnis eine build.properties Datei, die in etwa so aussieht:

# The name of the project
propel.project = bookstore

# The database driver
propel.database = sqlite

# The connection parameters (optional, but required if you want to initialize db)
#
# This is the PDO DSN (see online docs http://www.php.net/pdo for more info)
propel.database.url = sqlite:/path/to/bookstore.db
# Other examples:
# propel.database.url = mysql:host=localhost;dbname=test
# propel.database.url = pgsql:host=localhost dbname=db-name user=db-username password=db-password
#
# If you are using MySQL or Oracle, you will have to specify any username and password separately
# propel.database.user = db-user
# propel.database.password = db-password

Setzen der Laufzeit Konfiguration:
Die Laufzeitkonfiguration wird in der Applikation zum Konfigurieren der erzeugten Objekte benötigt. Zum Erzeugen der SQL und PHP Klassen wird sie nicht benötigt, aber sie wird in ein PHP freundliches Array übersetzt und deswegen ist es besser sie vor dem build zu erstellen.
Eine runtime-conf.xml mit folgender Struktur im Projektverzeichnis erstellen:

<?xml version="1.0" encoding="ISO-8859-1"?>

<config>
 <!-- Uncomment this if you have PEAR Log installed
 <log>
  <type>file</type>
  <name>/path/to/prople.log</name>
  <ident>propel-bookstore</ident>
  <level>7</level>
 </log>
 -->
 <propel>
  <datasources default="bookstore">
   <datasource id="bookstore"> <!-- this ID must match <database name=""> in schema.xml -->
    <adapter>sqlite</adapter> <!-- sqlite, mysql, myssql, oracle, or pgsql -->
    <connection>
     <dsn>sqlite2:/path/to/bookstore.db</dsn> <!-- the PDO connection DSN for database -->
    </connection>
   </datasource>
  </datasources>
 </propel>
</config>

Eine ausführliche Beschreibung ist hier

Leave Your Comment