Laravel5.6 如何打印 SQL?insert/update/select 打印方法总结
方法一 :
$sql = DB::table('my_table')->select()->tosql();
此方法支持 select 语句
方法二 :
DB::connection()->enableQueryLog();
DB::table('my_table')->insert($data);
$logs = DB::getQueryLog();
dd($logs);
此方法支持 select 语句
方法三 :
// 在需要打印SQL的语句前添加监听事件。
DB::listen(function($query) {
$bindings = $query->bindings;
$sql = $query->sql;
foreach ($bindings as $replace){
$value = is_numeric($replace) ? $replace : "'".$replace."'";
$sql = preg_replace('/\?/', $value, $sql, 1);
}
dd($sql);
});
// 要打印SQL的语句
$res = DB::table('my_table')->insert($data);
此方法支持 insert, update, delete, select 等。
吐槽:Laravel 打印个SQL也太麻烦了,不明白为什么这么设计,如果各位有更好的方法欢迎指点。
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
关于 LearnKu
高认可度评论:
也可以故意把sql写错,laravel会把sql打印出来,也可以看到完整的sql。
https://github.com/overtrue/laravel-query-...
你可以用超哥的这个库,或者参考一下它做法,和你的一样使用 DB::listen,不过会把SQL记录到日志文件中,
然后采用
tail命令监听 laravel.log 文件变化,它会实时在命令行输出日志文件添加内容,你的执行记录的SQL也会出现也可以故意把sql写错,laravel会把sql打印出来,也可以看到完整的sql。
@王成涛 老哥,你这个方法是真的稳,学到了 :joy:
@王成涛 牛逼
@王成涛 牛逼