作者 lyh

gx

... ... @@ -33,35 +33,25 @@ class QueryListener
public function handle(QueryExecuted $event)
{
try{
// 将 SQL 中的占位符 '?' 替换为 '%s'
if (env('APP_DEBUG') == true) {
$sql = str_replace("?", "'%s'", $event->sql);
// 将绑定参数进行处理
foreach ($event->bindings as $i => $binding) {
if ($binding instanceof \DateTime) {
// 格式化 DateTime 类型的参数
$event->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
} else {
if (is_string($binding)) {
// 确保字符串参数以引号括起来
$event->bindings[$i] = "'$binding'";
} elseif (is_numeric($binding)) {
// 确保数值参数的正确性
$event->bindings[$i] = $binding;
} else {
// 其他类型的参数处理
$event->bindings[$i] = (string) $binding;
$event->bindings[$i] = "$binding";
}
}
}
// 检查占位符和绑定参数数量是否匹配
$placeholders = substr_count($sql, '%s');
if ($placeholders == count($event->bindings)) {
// 构建日志信息
if(strpos($sql,'%Y-%m') === false){
$log = vsprintf($sql, $event->bindings);
$log = $log . ' [ RunTime:' . $event->time . 'ms ] ';
}else{
$log = $sql;
}
$log = $log.' [ RunTime:'.$event->time.'ms ] ';
Log::debug($log);
} else {
Log::error("Number of placeholders ($placeholders) does not match number of bindings (" . count($event->bindings) . ") for SQL: $sql");
}
//监听api_no是TM咋个被改的
if (Str::contains($event->sql, 'update') && Str::contains($event->sql, '`api_no` =')) {
... ...