php - Laravel 5.3 - 如何记录页面上的所有查询?

标签 php laravel laravel-5.3

我和我的团队正在进行一个相当大的项目。查询无处不在 - 在 Controller 中,在 View 中的 View Composer (延迟加载)以及可能在其他一些服务中。跟踪这一切变得越来越困难,目前页面加载速度相当慢。

我应该在哪里放置\DB::enableQueryLog() 和\DB::getQueryLog() 来记录所有查询并转储它们?基本上,我在代码中寻找在任何查询发生之前发生的某个地方(放置 enableQueryLog()),并且我在寻找在 View 呈现之后发生的地方(转储 getQueryLog())。

解决这个问题的好方法是什么?

提前致谢。

最佳答案

完美的例子来了:

https://laravel.com/docs/5.3/database#listening-for-query-events

打开 app\Providers\AppServiceProvider.php 并将以下内容添加到 Boot() 函数中:

DB::listen(function ($query) {
    var_dump([
        $query->sql,
        $query->bindings,
        $query->time
    ]);
});

关于php - Laravel 5.3 - 如何记录页面上的所有查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41163199/

相关文章:

php - 无法为代码覆盖率生成解析 Laravel 别名

PHP DomDocument 替换模式

php - Laravel:带有 INSERT(外键)的 SQL LEFT JOIN

php - 计算 Laravel 中的关系数量

php - 有没有一种简单的方法(在 PhpStorm 中)将 PHP 代码片段包装在 PHPDoc 中?

php - 表上的删除和插入与更新行

php - Laravel/PHP 单元 : Asserting sameness of two models

Laravel Eloquent 模型在 belongsTo 方法中设置条件

php - Laravel 5.3 - htmlspecialchars() 期望参数 1 为字符串

php - 如何在 Laravel 5.3 中播种日期字段?