gpt4 book ai didi

php - 如何识别mysql日志上的学说查询?

转载 作者:行者123 更新时间:2023-11-29 21:32:34 26 4
gpt4 key购买 nike

如何在 MySQL 日志(慢速日志、进程列表等)中识别调用或执行使用 Doctrine(使用查询生成器和 DQL)创建的查询的函数/方法?该项目是在 Symfony 中开发的,但其他部分是用 perl 和 PHP 开发的,没有 symfony。

在我们项目的某些部分,例如在 perl 中,我们只是向查询添加注释。例如:

SELECT /* FooScript-FooMethod */ col1, col2 FROM  TABLE t1 WHERE col1 >= '2016-01-08'

有什么方法可以用 Doctrine 做到这一点吗?我的意思是,我可以在 Doctrine 中向生成的查询添加注释,或者在查询上添加额外的信息,以便可以在 Doctrine 日志之外识别它吗?

最佳答案

怎么样... Bobby Tables

在方法 createQueryBuilder 中的 Repository 类的共同祖先中,执行以下操作:

public function createQueryBuilder($alias, $indexBy = null)
{
$qb = parent::createQueryBuilder($alias, $indexBy);

if (DOCTRINE_DEBUG) {
$qb->andWhere("'DEBUG_MARKER' != ':DEBUG_MARKER'")
->setParameter('DEBUG_MARKER', '');
}

return $qb; // D-oh!
}

然后在构建查询时:

    ...
$qb->setParameter('DEBUG_MARKER', __METHOD__);
// but that assumes there IS a **DEBUG_MARKER** parameter
...

或者在 QueryBuilder 中添加 setDebugMarker 方法...

关于php - 如何识别mysql日志上的学说查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com