Tag Archives: ORM

Propel Object-Relational Mapping (ORM) 解決方案

Java 平台整合 Hibernate 這個 ORM 套件進行開發相當的普遍,現在 PHP 也有 Propel 和其他類似的套件,由於 Propel 已經整合到 symfony 這個 PHP framework,相信技術和穩定方面都達到了一 定程度,最近試著整合的確是有一定的困難度,整理的心得如下:

一 、安裝

在 Fedora 7 上需要以下幾個套件

  1. php-5.2.4
  2. php-pear-1.5.0
  3. php-xml-5.2.4
  4. php-pear-log
  5. php-mysql-5.2.4 (看使用什麼資料安裝對應的套件)

上面的套件並不包含 Propel,不過 PHP 的套件管理的確已經相當成熟,安裝 Propel 相當方便,這裡介紹利用 Pear 安裝的程序:

首先安裝 phing 這個必需的套件

pear channel-discover pear.phing.info
pear install phing/phing

接著以下3個指令就可以裝好 Propel

pear channel-discover pear.phpdb.org
pear install phpdb/propel_generator
pear install phpdb/propel_runtime

請注意指令順序,在安裝過程中 pear 會自動安裝其他所需要的套件.

既然是 ORM 一定會有後端資料庫整合,如果用的是MySQL 請檢查 php5-mysql 套件是否已安裝

二 、應用

Propel 在自動產生 PHP ORM class 時必需有資料庫 schema 檔案,可以參考官方網站的文件來撰寫,檔案完成後 Propel 可以依據 schema 檔案自動建立相關 table,這裡介紹另一個比較常用的模式,資料庫 table 建好後,自動產生 schema 檔案。

先建立 build.properties,mysql 範例如下

propel.project = <project name>
propel.database = mysql
propel.database.url = mysql://<db user>:<db password>@<db host>/<database>

接下來用以下指令就可以自動依據 table 產生 schema.xml

phing -f /usr/share/pear/data/propel_generator/pear-build.xml -Dproject.dir=. creole

* 重點是 pear-build.xml 定義了建立 propel 相關檔案的資料,不同的 distribution 可能在不同位置

有了 build.properties、schema.xml 後請依照官方網站的說明建立 runtime-conf.xml,有了這3個檔案,以下指令就可以自動建立 php 的 class

phing -f /usr/share/pear/data/propel_generator/pear-build.xml -Dproject.dir=.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...