Laravel SQL语句调试 PHP

Skiy 5月前 43

修改文件 app/Providers/AppServiceProvider.php:

    public function boot()
    {
        if (env('APP_ENV') === 'local') {
            \DB::listen(function ($query) {
                $tmp = str_replace('?', '"'.'%s'.'"', $query->sql);
                $qBindings = [];
                foreach ($query->bindings as $key => $value) {
                    if (is_numeric($key)) {
                        $qBindings[] = $value;
                    } else {
                        $tmp = str_replace(':'.$key, '"'.$value.'"', $tmp);
                    }
                }

                try {
                    $tmp = vsprintf($tmp, $qBindings);
                    $tmp = str_replace("\\", "", $tmp);
                    \Log::info(' execution time: '.$query->time.'ms; '.$tmp."\n\n\t");
                } catch (\Exception $e) {
                    \Log::error(' execution time: '.$query->time.'ms; '.$tmp."\n\n\t");
                }

            });
        }
    }
最新回复 (0)
返回
发新帖