如何在symfony2中获取查询?

时间:2015-05-21 10:00:40

标签: php symfony

我正在创建一个像这样的查询

    $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();

但它会出错。

1 个答案:

答案 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中找到更多相关内容。