php $_get取得空,php – 如何获取Laravel 5中执行的查询? DB :: getQueryLog()返回空数组...

我正在尝试查看查询的日志,但DB :: getQueryLog()只是返回一个空数组:$user = User::find(5);

print_r(DB::getQueryLog());

结果Array

(

)

如何查看此查询的日志?

解决方法:

您需要通过调用以下命令启用查询日志:DB::enableQueryLog();

或注册事件监听器:DB::listen(

function ($sql, $bindings, $time) {

// $sql - select * from `ncv_users` where `ncv_users`.`id` = ? limit 1

// $bindings - [5]

// $time(in milliseconds) - 0.38

}

);

一些技巧

1.多个DB连接

如果您有多个数据库连接,则必须指定要记录的连接

要为my_connection启用查询日志:DB::connection('my_connection')->enableQueryLog();

要获取my_connection的查询日志:print_r(

DB::connection('my_connection')->getQueryLog()

);

2.在哪里启用查询日志?

对于HTTP请求生命周期,您可以在某些BeforeAnyDbQueryMiddleware middleware的handle方法中启用查询日志,然后在同一中间件的terminate方法中检索已执行的查询.class BeforeAnyDbQueryMiddleware

{

public function handle($request, Closure $next)

{

DB::enableQueryLog();

return $next($request);

}

public function terminate($request, $response)

{

// Store or dump the log data...

dd(

DB::getQueryLog()

);

}

}

中间件的链不会针对工匠命令运行,因此对于CLI执行,您可以在artisan.start事件侦听器中启用查询日志.

例如,您可以将它放在bootstrap / app.php文件中$app['events']->listen('artisan.start', function(){

\DB::enableQueryLog();

});

记忆

Laravel将所有查询保存在内存中.因此,在某些情况下,例如插入大量行或具有大量查询的长时间运行作业时,这可能会导致应用程序使用过多的内存.

在大多数情况下,您只需要查询日志以进行调试,如果是这种情况,我建议您仅为开发启用它.if (App::environment('local')) {

// The environment is local

DB::enableQueryLog();

}

参考https://www.icode9.com/content-1-453751.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值