栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Laravel 5中执行查询?DB :: getQueryLog()返回空数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Laravel 5中执行查询?DB :: getQueryLog()返回空数组

您将需要通过调用以下命令来启用查询日志:

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.多个数据库连接

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

启用查询日志

my_connection

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

获取以下查询日志

my_connection

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

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

对于HTTP请求生命周期,可以在

handle
某些
BeforeAnyDbQueryMiddleware

中间件的方法中启用查询日志,然后
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();});

3.记忆

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

在大多数情况下,您仅需要查询日志进行调试,如果是这种情况,我建议您仅将其用于开发。

if (App::environment('local')) {    // The environment is local    DB::enableQueryLog();}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号