如何查看查询中的参数?

guy*_*oni 11 mysql doctrine-query symfony doctrine-orm

为了调试我的代码,我希望看到执行的显式sql查询.

我使用创建查询createQueryBuilder,并且我实现的最明确的事情是使用以下原始查询:

$qb->getQuery()->getSQL();
Run Code Online (Sandbox Code Playgroud)

问题是,而不是参数,我看到持有人(?).我在网上找到了一些解决方案,但是它们分别用于1.3和1.4,没有用于Symfony-2.

想法?谢谢!

Adr*_*ult 27

您可以使用占位符访问所使用的参数$query->getParameters(),因此您可以使用以下命令调试查询:

$query = $qb->getQuery();
print_r(array(
    'sql'        => $query->getSQL(),
    'parameters' => $query->getParameters(),
));
Run Code Online (Sandbox Code Playgroud)

  • 基本上这是个好主意.问题是参数包可能包含对象,然后尝试打印它会产生巨大的字符串.我想要做的是将`$ query-> getParameters()`返回的参数包转换为可以替换占位符```的字符串数组. (3认同)
  • 我认为这个数组已经是一个标量值数组,如果你看一下setParameter方法https://github.com/doctrine/doctrine2/blob/2.2/lib/Doctrine/ORM/AbstractQuery.php#L202,它调用processParameterValue将数组和对象转换为标量值https://github.com/doctrine/doctrine2/blob/2.2/lib/Doctrine/ORM/AbstractQuery.php#L227 (2认同)