2011-02-06 79 views
2

我正在尋找PHP的查詢構建引擎(而不是 ORM!),它將滿足下面指定的一些條件。不幸的是,在研究Doctrine,Propel,Adodb,Zend_Db等之後,我找不到任何真正符合配置文件的內容 - 它們要麼太抽象(我不需要ORM級抽象),要麼不支持足夠的特性。我需要的是一個庫,它允許我以編程方式構建SQL查詢 - 我甚至不需要它來運行它,儘管這也可以。PHP SQL查詢構建引擎

我真的很想避免重新發明輪子,所以如果您知道適合配置文件的內容,請將其展開。如果你認爲上面提到的其中一個符合(我錯過了),請告訴我。

MUST HAVE(如果庫沒有它,它沒有用對我來說):

  • 支持PHP 5.2(命名空間的庫不能用於現在,不幸)
  • 支持計劃查詢生成,包括選擇表情,訂單通過,限制組通過,有,工會,外部連接等
  • 支持MySQL,甲骨文的OCI8,MSSQL,DB2,Postrges
  • 支持建築命名參數化查詢&個準備語句
  • 支持添加條件/在任何點動態加入像日期時間等數據類型
  • 支持 - 例如,適當地格式化呼入/呼出數據,使用適當的比較功能,如果需要,等等(當然適當的引用)。我們知道代碼中所有字段的類型,所以圖書館應該讓我們告訴它每個字段是什麼。
  • 單機(容易而不噸其他支持類的使用)
  • 易於擴展和許可證允許延伸上BSD-類似術語
  • 清潔PHP 5代碼(沒有PHP 4對象逐REF的cruft,等)

不錯的(我們可以實現這之上「必須有」秒,但如果它已經做會更開心)

  • 支持實例參數化queri es(全部爲&部分) - 即在構建了查詢支持之後,給它一部分參數並生成新的查詢並替換那些參數
  • 支持合併兩個查詢(即,添加條件和表從一個查詢到另一個)
  • 支持查詢的意見(包括參數化的他們)

BONUS(這真的讓我們高興,但我們可以沒有它生活現在)

  • 支持系列化
  • 支持緩存

是這樣,那麼誰知道這樣的圖書館?

+3

請問什麼被取消資格[Zend_Db](http://framework.zend.com/manual/en/zend.db.select.html)?它有一些低層次的方法,它們看起來與你所描述的一樣:`select-> from(..) - > where(..) - > groupBy(..)`。它使用支持大多數(如果不是全部)指定的數據庫的PDO,並且據我所知,它是合理的獨立的。 – 2011-02-06 06:58:20

+0

@Mike:它不支持數據類型AFAIK,只支持位置參數,而不是名稱。至少這就是我從文檔和代碼中找到的東西。我正在考慮使用它並擴展它以支持它,但如果有某些東西已經存在,我不想這樣做。 – StasM 2011-02-06 07:09:49

回答