- 创建文件app/middleware/SqlLogger.php
<?php
namespace app\middleware;use think\facade\Db;
use think\facade\Session;class SqlLogger
{public function handle($request, \Closure $next){Db::listen(function($sql, $time) {if (preg_match('/^(INSERT|UPDATE|DELETE|REPLACE)/i', $sql)) {$log = ['user_id' => Session::get('userid', 'guest'),'sql' => $sql,'time' => date('Y-m-d H:i:s'),'ip' => '127.1.1.1'];file_put_contents("D:/phpstudy_pro/WWW/sql.log", json_encode($log)."\n", FILE_APPEND);}});return $next($request);}
}?>
- 打开app/middleware.php文件并注册该中间件
<?php
return [\think\middleware\SessionInit::class,\think\middleware\AllowCrossDomain::class,\app\middleware\SqlLogger::class
];
- 最终效果:执行修改sql后,会自动触发该方法