gpt4 book ai didi

php - 给定一个查询,我如何找到生成它的 ORM 方法?

转载 作者:行者123 更新时间:2023-11-29 04:40:49 24 4
gpt4 key购买 nike

在我工作的地方,我们在多个项目中同时使用 Cake 和 Symfony,以及 Doctrine ORM。在我们的代码库中,很少有地方在代码中写出实际的 SQL 查询——我们让 ORM 库完成繁重的工作。

现在我的 IT 人员从 MySQL 慢速查询日志中给我 100mb 的文件,我需要找到创建此查询的位置。我已经在代码库中针对特定字段尝试了各种递归 grep,结果要么有几十个(如果不是数百个)文件,要么空手而归。例如:

cd ~/webproject
grep -r -E 'field1.*field2.*field3' .

find . -name '*.php' -print | xargs grep -E 'field1.*field2.*field3'

您是否有任何更好的建议、技巧或技术用于跟踪与特定最终“呈现”SQL 语句相关的文件、 Controller 或 ORM 模型方法?

最佳答案

这里有一个你可以使用的技巧。我不熟悉 Doctrine 或 Cake ORM,但可以很容易地用一般术语对其进行描述 - 我使用 Propel,我确信它可以做到这一点。

只需将自定义 WHERE 子句添加到您的所有查询中,如下所示(根据需要将方法名称换成您自己的方法名称)。 1 = 1 实际上是一个空操作,本身不应该影响查询性能,并且允许您在方便的注释中走私:

$query->addCustomWhere(
'1 = 1 /* ' . __CLASS__ . '::' . __FUNCTION__ . ' */'
);

然后您所有记录的查询将在它们旁边的注释中显示类/函数。当然,你可以为此编写一个辅助方法,只需传入查询和魔术变量,就不必每次都写出来。

关于php - 给定一个查询,我如何找到生成它的 ORM 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29307825/

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