2014-10-08 50 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

相关问题