我正在查看具有以下(部分)类的继承代码:
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)。