我想记录查询并获取它的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命令。
请帮助我
答案 0 :(得分:3)
您拼写了方法名称。
DB::enableQueryLog();
答案 1 :(得分:2)
请首先使用以下代码启用查询日志
DB::connection()->enableQueryLog();
然后您可以使用以下方法
$queries = DB::getQueryLog();