php - 如何在symfony2中获取查询?

标签 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();

但它给出了错误。

最佳答案

如果您想检查 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/

相关文章:

PHP 和 MySql - 如何使此插入查询工作?

php - MySQL加载文件无效整数

Symfony2 找不到模板文件

php - 在 Symfony 2.6 中自动加载 PHPExcel 1.0

javascript - 发送 Jquery Ajax 时的 UTF-8 问题

php - HTML 表单中的复选框数组

php - MySQL Datediff 跳过周六和周日

symfony - 使用相同的 login_check Sonata 用户包和 Sonata 管理包登录

mysql - 导入数据库时​​,学说实体的外键约束失败

php - 表单域不显示