poniedziałek, 27 kwietnia 2009

Propel + XAMPP na Windowsie

cd D:\xampp\php>
pear channel-discover pear.phpdb.org
pear config-set preferred_state stable
pear install phpdb/propel_generator
pear install phpdb/propel_runtime

Miejsce gdzie się instaluje:
runtime -> D:\Xampp\php\PEAR\propel\
generator -> C:\php5\pear\data\propel_generator\

Sprawdzamy czy działa ogólnie:

D:\xampp\php>propel-gen i jeśli mamy błąd:
"No VERSION.TXT file found; try setting phing.home environment variable."
... należy odinstalować phing'a i zainstalować go ponownie.

Sprawdzamy czy generuje testowe projekty:
D:\xampp\php>propel-gen c:\php5\pear\data\propel_generator\projects\bookstore
D:\xampp\php>propel-gen c:\php5\pear\data\propel_generator\projects\treetest

Przystępujemy do utworzenia naszego projektu XTEST:

1) w katalogu c:\php5\pear\data\propel_generator\projects\ tworzymy podkatalog 'xtest'
2) zakładamy bazę danych xtest:

D:\xampp\mysql\bin\mysql -u root

CREATE DATABASE `xtest` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'xtest'@'localhost' IDENTIFIED BY 'test1234';
GRANT USAGE ON * . * TO 'xtest'@'localhost' IDENTIFIED BY 'test1234' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
GRANT ALL PRIVILEGES ON `xtest` . * TO 'xtest'@'localhost' WITH GRANT OPTION ;
FLUSH PRIVILEGES;

3) w podkatalogu tworzymy plik build.properties i umieszczamy w nim poniższą zawartość:

propel.project = xtest
propel.database = mysql
propel.database.url = mysql:dbname=xtest
propel.database.user = xtest
propel.database.password = test1234
propel.mysqlTableType = InnoDB
propel.disableIdentifierQuoting=true
propel.targetPackage = xtest
propel.addGenericAccessors = true
propel.addGenericMutators = true
propel.useDateTimeClass = true

3) tworzymy plik schema.xml i umieszczamy w nim poniższą zawartość:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<database name="xtest" defaultIdMethod="native">
<table name="miasto" description="Tabela Miast">
<column name="miasto_id" type="integer" primaryKey="true" autoIncrement="true" required="true" description="Id Miasta"/>
<column name="nazwa" type="varchar" size="255" required="true" description="Nazwa Miasta"/>
<column name="panstwo_id" type="integer" required="true" description="Klucz obcy do tabeli Panstwo"/>
<foreign-key foreignTable="panstwo">
<reference local="panstwo_id" foreign="panstwo_id"/>
</foreign-key>
</table>

<table name="panstwo" description="Tabela Panstw">
<column name="panstwo_id" type="integer" required="true" primaryKey="true" autoIncrement="true" description="Id Panstwa"/>
<column name="nazwa" type="varchar" size="128" required="true" description="Nazwa Panstwa"/>
</table>
</database>

4) tworzymy plik runtime-conf.xml i umieszczamy w nim poniższą zawartość:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<propel>
<datasources default="xtest">
<datasource id="xtest">
<adapter>mysql</adapter>
<connection>
<dsn>mysql:dbname=xtest;host=localhost</dsn>
</connection>
</datasource>
</datasources>
</propel>
</config>

5) Uruchamiamy poniższy kreator:

D:\xampp\php>propel-gen c:\php5\pear\data\propel_generator\projects\xtest

6) Jeśli powyższe zakończyło się sukcesem, wypełniamy strukturą naszą bazę danych:

D:\xampp\php>propel-gen c:\php5\pear\data\propel_generator\projects\xtest insert-sql

7) Tworzymy przykładowy plik index.php dla naszej aplikacji:

error_reporting(E_ALL);

set_include_path("C:\php5\pear\data\propel_generator\projects\xtest\build\classes" . PATH_SEPARATOR . get_include_path());
require_once 'propel/Propel.php';

Propel::init("C:\php5\pear\data\propel_generator\projects\xtest\build\conf\xtest-conf.php");

$panstwo = new Panstwo();
$panstwo->setNazwa("Polska");

$miasto = new Miasto();
$miasto->setNazwa("Warszawa");
$miasto->setPanstwo($panstwo);

$miasto->save();

$c = new Criteria();
$miasta = MiastoPeer::doSelect($c);

var_dump($miasta);
?>

Więcej przykładów manipulowania danymi pod adresem: http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/BasicCRUD

8) Jeśli powyższy skrypt nie działa, wywalając Apache'a:
należy pobrać : http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip
i skopiować z paczki plik: libmysql.dll do katalogów xampp\apache\bin & xampp\php

9) Należy również sprawdzić czy poniższe dyrektywy są odpowiednio ustawione:

ze1_compatibility_mode Off
magic_quotes_gpc Off
magic_quotes_sybase Off
register_globals Off

10) Do poczytania: http://www.internetmaker.pl/artykul/4268,1,propel_-_porady_jak_rozwiazac_podstawowe_problemy.html

1 komentarz:

  1. jakiej wersji xamppa, propela i phinga uzyłeś? bo mi to jakos nie działa.

    OdpowiedzUsuń

Archiwum bloga