前言
记录运行时产生的所有sql记录,包括select和update等。适用于无法定位到执行的代码段,通过sql反向查找。
实现
- 编辑文件 larvel\app\Providers\EventServiceProvider.php
- 在boot函数中加入记录代码
/**** Register any events for your application.** @return void*/public function boot(){parent::boot();if (env('APP_DEBUG')) {//sql调试DB::listen(function ($sql) {foreach ($sql->bindings as $i => $binding) {if ($binding instanceof \DateTime) {$sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');} else {if (is_string($binding)) {$sql->bindings[$i] = "'$binding'";}}}$query = str_replace(['%', '?'], ['%%', '%s'], $sql->sql);$query = vsprintf($query, $sql->bindings);Log::alert('sql_log',['sql=>'.$query]);});}}
测试
在laravel\storage\logs\laravel.log中出现sql日志