在Symfony的开发者模式下,我可以看到EntityManager
执行多少查询。 如何转储这些数据?
我尝试:
$stack = new DoctrineDBALLoggingDebugStack();
$this->em->getConfiguration()->setSQLLogger($stack);
//...queries there
var_dump($stack);
结果错误:
object(DoctrineDBALLoggingDebugStack)[334]
public 'queries' =>
array (size=0)
empty
public 'enabled' => boolean true
public 'start' => null
public 'currentQuery' => int 0
所有 SQL 查询都记录在 DBAL 层中。所以使用 DBAL 配置:
$em->getConnection()->getConfiguration()->setSQLLogger($stack); // OK
而不是 ORM 配置:
$em->getConfiguration()->setSQLLogger($stack);
可以通过编程方式访问分析数据,请参阅 https://symfony.com/doc/master/profiler/profiling_data.html
如果您在测试中需要它,请参阅此 https://symfony.com/doc/master/testing.html#accessing-the-profiler-data