【问题标题】:How to get the raw sql of doctrine教义的原始sql如何获取
【发布时间】:2018-01-04 06:59:03
【问题描述】:

我喜欢更多地了解 Doctrine,并希望分析从我的 DQL 或 find 方法构建的 SQL 至极。

是否可以用 PHP 打印语句?

另一个问题是: 编写自己的 DQL(尤其是一些连接)是否更高效,或者当我使用 find 方法时,学说是否足够聪明以匹配这些?

【问题讨论】:

标签: php doctrine-orm


【解决方案1】:

根据Logging Doctrine SQL queries in Symfony2

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

$logger = new \Doctrine\DBAL\Logging\DebugStack();

/* @var Doctrine\DBAL\Connection $connection */
$connection->getConfiguration()->setSQLLogger($logger);

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

var_dump($logger->queries);

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

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

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2014-05-11
    相关资源
    最近更新 更多