|
@@ -33,20 +33,35 @@ class QueryListener |
|
@@ -33,20 +33,35 @@ class QueryListener |
|
33
|
public function handle(QueryExecuted $event)
|
33
|
public function handle(QueryExecuted $event)
|
|
34
|
{
|
34
|
{
|
|
35
|
try{
|
35
|
try{
|
|
36
|
- if (env('APP_DEBUG') == true) {
|
|
|
|
37
|
- $sql = str_replace("?", "'%s'", $event->sql);
|
|
|
|
38
|
- foreach ($event->bindings as $i => $binding) {
|
|
|
|
39
|
- if ($binding instanceof \DateTime) {
|
|
|
|
40
|
- $event->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
|
36
|
+ // 将 SQL 中的占位符 '?' 替换为 '%s'
|
|
|
|
37
|
+ $sql = str_replace("?", "'%s'", $event->sql);
|
|
|
|
38
|
+ // 将绑定参数进行处理
|
|
|
|
39
|
+ foreach ($event->bindings as $i => $binding) {
|
|
|
|
40
|
+ if ($binding instanceof \DateTime) {
|
|
|
|
41
|
+ // 格式化 DateTime 类型的参数
|
|
|
|
42
|
+ $event->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
|
|
|
|
43
|
+ } else {
|
|
|
|
44
|
+ if (is_string($binding)) {
|
|
|
|
45
|
+ // 确保字符串参数以引号括起来
|
|
|
|
46
|
+ $event->bindings[$i] = "'$binding'";
|
|
|
|
47
|
+ } elseif (is_numeric($binding)) {
|
|
|
|
48
|
+ // 确保数值参数的正确性
|
|
|
|
49
|
+ $event->bindings[$i] = $binding;
|
|
41
|
} else {
|
50
|
} else {
|
|
42
|
- if (is_string($binding)) {
|
|
|
|
43
|
- $event->bindings[$i] = "$binding";
|
|
|
|
44
|
- }
|
51
|
+ // 其他类型的参数处理
|
|
|
|
52
|
+ $event->bindings[$i] = (string) $binding;
|
|
45
|
}
|
53
|
}
|
|
46
|
}
|
54
|
}
|
|
|
|
55
|
+ }
|
|
|
|
56
|
+ // 检查占位符和绑定参数数量是否匹配
|
|
|
|
57
|
+ $placeholders = substr_count($sql, '%s');
|
|
|
|
58
|
+ if ($placeholders == count($event->bindings)) {
|
|
|
|
59
|
+ // 构建日志信息
|
|
47
|
$log = vsprintf($sql, $event->bindings);
|
60
|
$log = vsprintf($sql, $event->bindings);
|
|
48
|
- $log = $log.' [ RunTime:'.$event->time.'ms ] ';
|
61
|
+ $log = $log . ' [ RunTime:' . $event->time . 'ms ] ';
|
|
49
|
Log::debug($log);
|
62
|
Log::debug($log);
|
|
|
|
63
|
+ } else {
|
|
|
|
64
|
+ Log::error("Number of placeholders ($placeholders) does not match number of bindings (" . count($event->bindings) . ") for SQL: $sql");
|
|
50
|
}
|
65
|
}
|
|
51
|
//监听api_no是TM咋个被改的
|
66
|
//监听api_no是TM咋个被改的
|
|
52
|
if (Str::contains($event->sql, 'update') && Str::contains($event->sql, '`api_no` =')) {
|
67
|
if (Str::contains($event->sql, 'update') && Str::contains($event->sql, '`api_no` =')) {
|