打印 Laravel 的 SQL 语句

JellyBool

JellyBool

在使用 Laravel 的 Eloquent 进行数据查询的时候,很多小伙伴都想看到背后执行的 SQL 语句到底是什么样的,这小笔录就是解决这个小问题的:

Providers/AppServiceProvider.php 的 boot 方法添加一行代码就行:

    public function boot()

    {

        \DB::listen(function($query) { \Log::info($query); });

    }

这个时候,只要你刷新页面,有执行到 SQL 查询,就可以到 storage/logs 文件夹下面的 laravel log 查看具体的 sql 语句了。

本文由 JellyBool 创作, 转载和引用遵循 署名-非商业性使用 2.5 中国大陆 进行许可。

共有 5 条评论

LeoYang
\DB::listen(function ($query, $binds) {
    foreach ($binds as $bind) {
        $query = preg_replace('/\?/', '\'' . $bind . '\'', $query, 1);
    }
    \Log::info($query);
});
高永立
dd(DB::getQueryLog());
jayin
DB::connection()->enableQueryLog();
我是代码写到中间
$queries = DB::getQueryLog(); // 获取查询日志
dd($queries); // 即可查看执行的sql,传入的参数等等

我用的这个

octopus 回复 jayin

我试了 为啥报错呢
报错信息:

Whoops, looks like something went wrong.

1/1
BadMethodCallException in Builder.php line 2443:
Call to undefined method Illuminate\Database\Query\Builder::connection()
JellyBool 回复 octopus

基本上就是版本不一样的错误吧