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