Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 记录/保存从laravel执行的所有SQL查询_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 记录/保存从laravel执行的所有SQL查询

Php 记录/保存从laravel执行的所有SQL查询,php,laravel,laravel-5,Php,Laravel,Laravel 5,我们正面临一个非常关键和奇怪的问题,经过一个漫长的过程,几乎没有数据丢失。我们正在处理货物数据,一批货物可能包含1000名客户提供的1000箱货物。每个客户将获得自己的跟踪编号(awb编号),我们将在一个装运编号中添加1000批装运,我们将使用装运编号更新每个流程。当我们更新装运编号时,将更新所有相关装运。在此过程中,我们不会更新发货人/收货人详细信息,但在此过程之后,随机发货人和收货人数据将被删除。我们已经分析了整个代码一周,我们不知道它到底是在哪里被删除的。这是一个生产问题,我们正处于一个非

我们正面临一个非常关键和奇怪的问题,经过一个漫长的过程,几乎没有数据丢失。我们正在处理货物数据,一批货物可能包含1000名客户提供的1000箱货物。每个客户将获得自己的跟踪编号(awb编号),我们将在一个装运编号中添加1000批装运,我们将使用装运编号更新每个流程。当我们更新装运编号时,将更新所有相关装运。在此过程中,我们不会更新发货人/收货人详细信息,但在此过程之后,随机发货人和收货人数据将被删除。我们已经分析了整个代码一周,我们不知道它到底是在哪里被删除的。这是一个生产问题,我们正处于一个非常关键的阶段。我们无法在我们的环境中重现此问题。但这是来自不同分支机构的客户端的随机报告

为了解决这个问题,我们决定添加更多日志,并希望对正在执行的SQL语句进行严格监控。无论如何,我必须记录/保存来自Laravel(DB和Elount模型)的执行查询。 我期望的是,如果我在laravel framework类中添加一段代码,它必须将sql查询记录在文件/数据库中,这样我们就不会错过任何查询

我们开始分析日志,但仍然没有线索,有人能建议如何解决这个问题吗


我们在
app\Providers\AppServiceProvider.php中使用Laravel5.5

编写以下代码。 别忘了
使用light\Support\Facades\DB

您可以存储此查询,也可以根据需要在函数中记录

public function boot()
{
    DB::listen(function ($query) {
        dd($query->sql);
        // $query->bindings
        // $query->time
    });
}

请参阅:

app\Providers\AppServiceProvider.php
编写以下代码。 别忘了
使用light\Support\Facades\DB

您可以存储此查询,也可以根据需要在函数中记录

public function boot()
{
    DB::listen(function ($query) {
        dd($query->sql);
        // $query->bindings
        // $query->time
    });
}

参考:

可能相关我想观察来自laravel framework的查询,而不是我们的类,这样我就不会错过系统中执行的任何查询。你可以接受@Hackerman的建议,并将其放在记录所有内容的服务提供商中。你没有说明你正在使用的SQL引擎,但是如果是MySQL,你可以试试这个@JoelHinz&Hackerman谢谢你的建议,我试过了,并修改了AppServiceProvider::boot,但它没有打印值,而是替换为PlaceHolder。可能是为了安全,但我需要知道这些值,直到这个问题得到解决,有什么帮助吗?也许我想观察来自laravel框架的查询,而不是我们的类,这样我就不会错过在系统中执行的任何查询。你可以接受@Hackerman的建议并将其放在记录所有内容的服务提供商中。你没有说明你正在使用的SQL引擎,但如果是MySQL,你可以试试这个@JoelHinz&Hackerman谢谢你的建议,我试过了并修改了AppServiceProvider::boot,但它不是打印值,而是替换为占位符。可能是为了安全,但在这个问题解决之前,我需要知道这些值,有什么帮助吗?