如何获得学说的原始 SQL



我喜欢更多地了解教义,并希望分析从我的DQL或find方法构建的学说的SQL。

是否可以用 PHP 打印语句?

另一个问题是: 当我使用 find 方法时,编写自己的 DQL (尤其是具有某些联接(是性能更高,还是学说足够聪明以匹配这些 DQL?

根据日志记录原则 Symfony2 中的 SQL 查询

您可以使用 Doctrine 记录器(如 DebugStack(或自己的 SQLLogger 接口实现。

$logger = new DoctrineDBALLoggingDebugStack();
/* @var DoctrineDBALConnection $connection */
$connection->getConfiguration()->setSQLLogger($logger);

执行某些查询后,您可以从记录器的公共属性中获取查询字符串和参数。

var_dump($logger->queries);

你的第二个问题非常不同。顺便说一句,正如文档中所说:

尚未

从数据库加载的对象将被替换 使用延迟加载代理实例。未加载的集合也是 替换为提取所有包含对象的延迟加载实例 首次访问时。但是,依赖延迟加载机制会导致 对数据库执行许多小查询,这些查询可以 显著影响应用程序的性能。获取联接是水化您需要的大部分或全部实体的解决方案 在单个 SELECT 查询中。

相关内容

  • 没有找到相关文章

最新更新