Propel ORM Plus Phing On Windows
今天试用了传说中的Propel,感觉相当好,果然是个不错的ORM。不过它依赖于Phing,正好这两个项目都是BullSoft关注的项目。现在我就来讲下如何配置环境,两个项目都支持Pear安装,但是今天无论如何也装不上Phing,所以就讲讲单独安装的过程吧。
- 下载两个包
项目官方站地址分别是http://www.propelorm.org和http://www.phing.info/trac/。由于Propel由两部分组成,一部分用于生成Model,一部分用于使用Model,所以在此我们把生成Model的部分提取出来,也就是propel的generator文件夹,改名为propel和phing统一放在D:\phing目录下。
- 添用户自定义环境变量,把=号后面的改成你实际的环境
#PHP执行文件目录
PHP_COMMAND=d:\php\php.exe
//phing根目录
PHING_HOME=d:\phing\phing
#propel根目录
PROPEL_HOME=d:\phing\propel
//phing的类目录
PHP_CLASSPATH=d:\phing\phing\classes
- 打开cmd,输入
PATH %PATH%;%PHING_HOME%\bin;%PROPEL_HOME%\bin
现在你就可以直接使用propel-gen和phing命令了,不过这是临时的,关闭cmd窗口后就会失效。
- 使用propel建立项目
新建一个文件夹如:bookstore 新建文件schema.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <database name="bookstore" defaultIdMethod="native">
3 <table name="book" phpName="Book">
4 <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
5 <column name="title" type="varchar" size="255" required="true" />
6 <column name="isbn" type="varchar" size="24" required="true" phpName="ISBN"/>
7 <column name="publisher_id" type="integer" required="true"/>
8 <column name="author_id" type="integer" required="true"/>
9 <foreign-key foreignTable="publisher" phpName="Publisher" refPhpName="Book">
10 <reference local="publisher_id" foreign="id"/>
11 </foreign-key>
12 <foreign-key foreignTable="author">
13 <reference local="author_id" foreign="id"/>
14 </foreign-key>
15 </table>
16 <table name="author" phpName="Author">
17 <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
18 <column name="first_name" type="varchar" size="128" required="true"/>
19 <column name="last_name" type="varchar" size="128" required="true"/>
20 </table>
21 <table name="publisher" phpName="Publisher">
22 <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
23 <column name="name" type="varchar" size="128" required="true" />
24 </table>
25 </database>
使用以下命令生成模型文件:
propel-gen om
可以在bookstore/build/classes/bookstore/下找到生成的模型文件
新建build.properties文件
# Database driver
propel.database = mysql
# Project name
propel.project = bookstore
# Connection parameters
propel.database.url = mysql:host=localhost;dbname=my_db_name
propel.database.user = my_db_user
propel.database.password = my_db_password
# Other examples:
# propel.database.url = sqlite:/path/to/bookstore.db
# propel.database.url = pgsql:host=localhost dbname=my_db_name user=my_db_user password=my_db_password
使用以下命令生成SQL文件:
propel-gen sql
可以在bookstore/build/sql/下找到相关的SQL文件 使用以下命令生成表(插入SQL)
propel-gen insert-sql
新建runtime-conf.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!-- Uncomment this if you have PEAR Log installed
<log>
<type>file</type>
<name>/path/to/propel.log</name>
<ident>propel-bookstore</ident>
<level>7</level>
</log>
-->
<propel>
<datasources default="bookstore">
<datasource id="bookstore">
<adapter>mysql</adapter> <!-- sqlite, mysql, myssql, oracle, or pgsql -->
<connection>
<dsn>mysql:host=localhost;dbname=my_db_name</dsn>
<user>my_db_user</user>
<password>my_db_password</password>
</connection>
</datasource>
</datasources>
</propel>
</config>
使用以下命令生成运行时的配置文件:
propel-gen convert-conf
可以找到bookstore/build/conf/bookstore-conf.php文件
其这第2步和第3步用不着这么麻烦,我们只要在d:/phing/目录下建个bat文件就行(如:start.bat):
@echo off @setlocal set PHP_COMMAND=d:\php\php.exe set PHING_HOME=d:\phing\phing set PROPEL_HOME=d:\phing\propel set PHP_CLASSPATH=d:\phing\phing\classes PATH %PATH%;%PHING_HOME%\bin;%PROPEL_HOME%\bin cmd.exe