我正在创建一个像这样的查询
$om = $this->getContainer()->get('doctrine')->getManager();
$qb = $om->createQueryBuilder()
->from('ProbusQuoteExtraBundle:Quote', 'q')
->select('q', 'b')
->join('q.booking', 'b')
->orderBy('q.id', 'asc')
->where("q.startDate >= '" . date('Y-m-d H:i:s', strtotime('-1 hour')) . "'")
->andWhere("q.startDate <= '" . date('Y-m-d H:i:s', time()) . "'")
;
我想通过使用此
检查我是否创建了正确的查询echo $qb->getQuery();
但它会出错。
答案 0 :(得分:3)
如果要在DQL或SQL中检查语句,可以执行此操作
在->getSQL()
上调用->getDQL()
或$qb->getQuery()
;
另外,我建议安装xdebug并使用var_dump()
:
$sql = $qb->getQuery()->getSQL();
$dql = $qb->getQuery()->getDQL();
var_dump($sql);
var_dump($dql);
它将同时打印QueryBuilder的SQL和DQL转储
由于我们正在使用它,而不是通过连接注入参数,而是使用QueryBuilders ->setParameters()
方法:
->where("q.startDate >= :startDate")
->andWhere("q.startDate <= :endDate")
->setParameters(array(
'startDate' => date('Y-m-d H:i:s', strtotime('-1 hour')),
'endDate' => date('Y-m-d H:i:s', time()),
))
您可以在Doctrine2 documentation中找到更多相关内容。