zend_db->;select()通过直接pdo查询提供


What does zend_db->select() provide over a direct pdo query?

我正在查看具有以下(部分)类的继承代码:

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查询所没有的动态能力或效率?

谢谢你中午的提问。

查询生成器只是PDO之上的可用性层。它提供了一些PDO没有的方便功能,比如处理IN语句。它还可以实现适配器设计模式,在那里可以很容易地交换数据库驱动程序。

从本质上讲,PDO仍然需要您编写原始SQL,而查询生成器将为您编写原始SQL。查询生成器生成的任何SQL都将对查询生成器支持的任何SQL适配器有效(例如PostgreSQL、MySQL、SQLite)。