在使用ZendFramework开发的时候,会遇到要对SQL进行优化的处理,但是从ZEND的DB类里并没有找到输出SQL的方法,唯一看到的输出也是在SELECT类里面有一个__toString()的方法,但这个方法也只能输出SELECT的语句,对于Insert,Update,Delete之类的语句并不能处理。
开始的时候,很郁闷,后来问HaoHappy,因为他是国内第一批翻译ZF手册的人,果然我一问,他一下子就说,有一个Profiler类可以解决。
翻开手册,Zend_Db_Profiler,里面果然有操作。。(注:类名是凭记忆的,以下内容也是凭记忆写出来的)
1、在DB的CONFIG里面把profiler打开,如果没有打开,则需要用$profiler = $db->getProfiler();然后 $profiler->setEnable(true); (好象记错了,请看手册,我这里只说解决方法)
2、然后有一个设置 Profiler 的filter条件的,可以设定select,insert,update,delete的操作。
3、然后根据官方的例子,对SQL进行输出(手册上的例子,只是输出了执行时间最长的SQL哦)。如果需要每条都输出,你得在那个 if 判断外把sql 存储下来,即 $query->getQuery();
4、根据手册,还可以输出到fireBug和利用FirePHP来进行类似的debug,但我试了一下没有成功( QEE 支持 firePHP ,不知道是否借鉴了ZEND的这个功能,猜测而己 )
纯粹是一个记录,顺便感谢一下HaoHappy