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;
}
问问题
8431 次
3 回答
3
在教义 2.3.2
use Doctrine\DBAL\Logging\DebugStack;
$logger = new DebugStack();
$config->setSQLLogger($logger);
现在您可以使用 print_r($logger) 打印 $logger;
于 2013-01-27T21:40:52.640 回答
3
EchoSqlLogger
正如 Haim Evgi 所建议的那样,嗯,回显日志输出,所以你应该在你的网站上看到它。
如果您只想查看 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
我只是这样做:
# tail -f /var/log/mysql/query.log
(更多细节见tail命令)
并重新加载执行查询的页面。
于 2011-09-12T19:50:38.957 回答
0
//create query
$oQuery = $this->em->createQuery('SELECT tbl.id FROM mytable tbl WHERE tbl.id = :id');
//print query and params
echo "SQL: ".$oQuery->getSQL();
while($param = $oQuery->getParameters()->current()){
echo "Param: ".$param->getName()." | ".$param->getValue()." | ".$param->getType();
$oQuery->getParameters()->next();
}
SQL: SELECT tbl.id AS id0 FROM mytable tbl WHERE tbl.id = ?
参数:id | 1 | 整数
于 2013-02-21T14:40:59.480 回答