在运行时如何查看已准备好的查询的DQL? [英] How do you view a DQL query prepared query at runtime?

查看:118
本文介绍了在运行时如何查看已准备好的查询的DQL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  function get_event($ id){
$ query = $ this-> em-> createQuery('SELECT e.name,e.date,e.time ,e.venue,e.venueaddress,e.parish,e.genre,e.entryprice,e.phone,e.specialguests,
e.weblink,e.otherinfo,e.flyer1,e.flyer2 from Events e WHERE e.id =:id');
$ query-> setParameter('id',$ id);


//可以在这个时间查看查询吗?


$ result = $ query-> getResult();
return $ result;
}


解决方案

Haim Evgi建议的EchoSqlLogger ,好的,回声的日志输出,所以你应该在你的网站上看到。



如果你只是想看看Doctrine会产生什么SQL查询,使用:

  $ query = $ this-> em-> createQuery ('SELECT e.name,e.date,e.time,e.venue,e.venueaddress,e.parish,e.genre,e.entryprice,e.phone,e.specialguests,
e.weblink ,e.otherinfo,e.flyer1,e.flyer2 from Events e WHERE e.id =:id');

print $ query-> getSQL();

但请注意,参数不包括在该sql字符串中,它们显示为占位符(=? )



为了观察Doctrine所做的最常见的技术是启用mysql(或任何使用的数据库)查询日志(不要在负载重的生产服务器上这样做)。



如果查询日志位于 /var/log/mysql/query.log 之下,我只需执行以下操作: / p>

 #tail -f /var/log/mysql/query.log 
pre>

(请参阅尾部命令更多细节)



并重新加载执行查询的页面。


function get_event($id){
            $query = $this->em->createQuery('SELECT e.name,e.date, e.time, e.venue, e.venueaddress,e.parish,e.genre, e.entryprice, e.phone, e.specialguests,
                                            e.weblink, e.otherinfo, e.flyer1, e.flyer2 from Events e WHERE e.id = :id');
            $query->setParameter('id', $id);


//CAN I VIEW THE QUERY AT THIS TIME?


            $result = $query->getResult();    
            return $result;    
        }

解决方案

The EchoSqlLogger as suggested by Haim Evgi, well, echo´s the log output, so you should see it on your website.

If you just want to see what SQL query Doctrine would generate, use:

$query = $this->em->createQuery('SELECT e.name,e.date, e.time, e.venue, e.venueaddress,e.parish,e.genre, e.entryprice, e.phone, e.specialguests,
                                        e.weblink, e.otherinfo, e.flyer1, e.flyer2 from Events e WHERE e.id = :id');

print $query->getSQL();

But be aware, parameters are not included in that sql string, they are shown as placeholders (= ?).

The most common technique I use in order to watch what Doctrine does is enabling the mysql (or whatever db you use) query log (dont do this on a production server which is under heavy load!).

If the query log is under /var/log/mysql/query.log I just do this:

# tail -f /var/log/mysql/query.log

(see tail command for more details)

And reload the page which executes the query.

这篇关于在运行时如何查看已准备好的查询的DQL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆