2009-11-01 29 views
1

您如何使用PHP和Zend Framework處理中型項目。你的模型和數據庫操作是否使用Zend DB Table/Row?或者你有SQL語句的抽象模型類嗎?Zend DB Table?或者你自己的SQL?

我想聽聽一些意見,謝謝。

+2

我不會使用Zend。這很難使用。您最好使用Codeigniter – GabiMe 2009-11-01 15:35:15

+3

CodeIgniter比ZF更簡單但質量更差,功能更少。毅力將獲得回報! – 2009-11-02 00:50:53

+0

Zend非常易於使用。這只是很難學:D – 2009-11-02 09:40:53

回答

6

我推薦Zend_Db_Table和Row來處理數據庫的東西。它不是非常先進的(請參閱Doctrine瞭解完整的ORM),但是封裝功能的好方法,您可以將自定義功能添加到Row對象。

可以生SQL方法總是添加到您的機型:

class MyModel extends Zend_Db_Table_Abstract { 

     public function getSomething(){ 
      return $this->getAdapter()->fetchAll("SELECT * FROM `tbl`"); 
     } 

    } 
+0

+1;這基本上是我的答案所說的。在過去使用ZF的項目中,我們爲每個表派生了來自Zend_Db_Table_Abstract的類;它工作得相當好,並且允許我們有一個支持某些類型表(例如查找表)的通用功能的類層次結構。 – 2009-11-02 01:00:50

+0

@James:你只擴展了Zend_Db_Table抽象還是其他的Zend_Db_Table_Row? – opHASnoNAME 2009-11-02 09:18:40

+0

我們只擴展了Zend_Db_Table_Abstract;不過,我們可能通過擴展Zend_Db_Table_Row來節省自己的工作量。我們結束了兩層模型 - 具體表類和第二個應用層模型,它們使用這些表類。 – 2009-11-02 18:52:49

1

我們在我們公司的模型親自使用Zend_Db_Select對象()。這是因爲我們在我們的電子商務軟件中使用了許多連接和東西。對於簡單的應用程序來說,Zend_Db_Table是合適的。

1

我一直在使用Doctrine最近的數據庫層,並沒有回頭看。我發現從數據庫填充對象圖很簡單。其他解決方案在處理我喜歡的關係方面太麻煩。

我的域模型位於數據庫層之上並管理業務邏輯。

它確實取決於您的域模型。當前版本的Doctrine需要所有模型來擴展一個類,所以如果你需要模型繼承,它是不適合的。此外,它只適用於您的模型與您的數據庫結構類似。