2014-10-08 52 views
0

即時尋找高於繼承代碼用下面的(局部的)類:zend_db-> select()通過直接的pdo查詢提供什麼?

class Model_UserGenre extends Zend_Db_Table_Abstract {...  

$select = $this->select()->from(array('ug' => $this->_name), array('user_id')) 
        ->where('genre_id IN (?)', $genreID) 
             ->orwhere('sub_genre_id IN(?)', $genreID) 
             ->group(array('ug.user_id')); 
     $result = $this->fetchAll($select); 
     return $result; 

...} 

這僅僅是一個示例代碼。我對Zend並不熟悉,並且試圖對zend db方法進行光標閱讀,但對我來說,它似乎不必要的複雜,只是在我不使用完全動態查詢時插入查詢字符串

是不是zend,特別是在這情況下,呈現某種直接的mysqli或PDO查詢所不具備的動態能力或效率?

非常感謝您的回答。

回答

1

查詢構建器就在那裏作爲PDO頂部的可用性層。它提供了PDO所不具備的一些便利功能,例如處理IN報表。它也可以實現adapter design pattern,在那裏你的數據庫驅動可以很容易地換出來。

本質上,PDO仍然會要求您編寫原始SQL,而查詢生成器會爲您執行此操作。查詢生成器生成的任何SQL對於查詢生成器支持的任何SQL適配器(例如PostgreSQL,MySQL,SQLite)都是有效的。

+0

好吧,這是有道理的。我想我寧願編寫原始sql,因爲它更易於閱讀,但交換連接器的能力可能非常有價值。謝謝! – 2014-10-08 02:18:17

+1

@MagicLasso我曾經以同樣的方式思考,但一點聰明的縮進和經驗/暴露使得查詢生成器語法看起來非常整潔且易於閱讀。 – Scopey 2014-10-08 02:20:55

+0

你有沒有一個很好的參考zend框架,我很有耐心地找到一個引用這些方法的參數(虐待不要懶惰,挖自己的代碼本身,但更快的參考將是很好的) – 2014-10-08 02:27:50