DB :: enableQueryLog()返回undifiend方法

时间:2019-08-23 14:18:14

标签: laravel laravel-5 laravel-5.8

我想记录查询并获取它的sql,所以我尝试了:

DB::enableQueyLog();
        Auth::user()->books();
        dd(DB::getQueryLog());

但我收到错误消息:

  

调用未定义的方法Illuminate \ Database \ MySqlConnection :: enableQueyLog()“

还尝试了laravel 5.8 docs中的建议,但没有任何内容显示在屏幕上,当我打开日志文件时,其中没有SQL。

请如何记录查询并获取原始SQL?

更新: 我尝试执行以下操作:

在AppServiceProvider.php中


namespace App\Providers;

use Illuminate\Support\Facades\File;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\DB;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        DB::listen(function ($query) {
             $query->sql;
             $query->bindings;
            // $query->time
        });


    }
}

以及在我的控制器中:

 Auth::user()->books();
        dd(DB::getQueryLog());

现在我得到了:

  

[]

,并且不执行任何sql命令。

请帮助我

2 个答案:

答案 0 :(得分:3)

您拼写了方法名称。

DB::enableQueryLog();

答案 1 :(得分:2)

请首先使用以下代码启用查询日志

DB::connection()->enableQueryLog();

然后您可以使用以下方法

$queries = DB::getQueryLog();