最近写项目用到了Laravel5.0(因为服务器PHP是5.4,没办法用更高的laravel版本),为了查看SQL语句,除了临时打印的方法(如下):
DB::connection()->enableQueryLog(); # 开启执行的日志
执行的sql语句 # 这里是用laravel模型查询的语句
var_dump(DB::getQueryLog()); # 打印模型查询执行的sql语句
。也要记录SQL到日志,方便后面需要的地方直接查看日志就好了。网上找了几个方法,都有点不同。现记录下我的操作:
- 打开项目文件
app/Providers/AppServiceProvider.php
- 在 boot 方法中添加一下内容即可:
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//日志记录SQL信息
\DB::listen(function ($query, $bindings, $time) {
$tmp = str_replace('?', '"' . '%s' . '"', $query);
$params= [];
foreach ($bindings as $key => $value) {
if (is_numeric($key)) {
$params[] = $value;
} else {
$tmp = str_replace(':' . $key, '"' . $value . '"', $tmp);
}
}
$tmp = vsprintf($tmp, $params);
$tmp = str_replace("\\", "", $tmp);
\Log::info(' execution time: ' . $time . 'ms; ' . $tmp . "\n\n\t");
});
}
效果如下:
帮到的同学点个赞哦!