如何获取Doctrine执行的所有查询?

gra*_*lle 5 php doctrine doctrine-orm

我正在使用 Symfony 2 为我的捆绑包创建一个控制台命令。该命令对数据库(Mysql)执行多个请求。为了调试我的命令,我需要知道命令执行期间执行了多少 SQL 查询。如果可能的话,显示这些请求(就像 Symfony 分析器所做的那样)

我对 AJAX 请求也有同样的问题。当我发出 AJAX 请求时,我无法知道请求期间执行了多少查询。

小智 9

您可以启用学说日志记录,例如:

$doctrine = $this->get('doctrine');
$doctrine = $this->getDoctrine();    
$em = $doctrine->getConnection();

// $doctrine->getManager() did not work for me 
// (resulted in $stack->queries being empty array)

$stack = new \Doctrine\DBAL\Logging\DebugStack();
$em->getConfiguration()->setSQLLogger($stack);

... // do some queries

var_dump($stack->queries);
Run Code Online (Sandbox Code Playgroud)

你可以去看看:http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/

将塞萨尔所拥有的归还给塞萨尔。我在这里找到它:在 Doctrine2 中对数据库的查询进行计数