我正在创建这样的查询
$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();
但它给出了错误。
最佳答案
如果您想检查 DQL 或 SQL 中的语句,您可以通过以下方式执行此操作
在 $qb->getQuery()
上调用 ->getSQL()
或 ->getDQL()
;
我还建议安装 xdebug 并使用 var_dump()
:
$sql = $qb->getQuery()->getSQL();
$dql = $qb->getQuery()->getDQL();
var_dump($sql);
var_dump($dql);
它将打印 QueryBuilder 的 SQL 和 DQL 转储
既然我们已经开始了,不要通过连接注入(inject)参数,而是使用 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中找到更多相关信息。 .
关于php - 如何在symfony2中获取查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370488/