本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Laravel 配置 SqlDebug 服务,进行实时监听打印 SQL

发布于2021-03-14 05:55     阅读(802)     评论(0)     点赞(17)     收藏(5)


0:释义

什么是服务容器
简而言之,Laravel 服务容器 是一个用于存储绑定组件的盒子,它还会为应用提供所需的服务。
Laravel 服务容器是用于管理类的依赖和执行依赖注入的工具,By Laravel 文档。

什么是服务提供者
如果说服务容器是提供绑定和依赖注入的的工具,那么 服务提供者 则是实现绑定的工具。

1:自定义服务提供者

php artisan make:provider SqlDebugServiceProvider

# Explanation:
# SqlDebugServiceProvider 自定义服务提供者的名字
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class SqlDebugServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     * register 方法用于执行服务绑定处理
     * 
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     * 可以使用所有已绑定的服务
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

2:注册自定义服务提供者

为了完成注册服务提供者的功能,仅需要将类名加入到 config/app.php 配置文件的 providers 节点。
    'providers' => [

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,
        /**
         * SQL 监听服务
         */
        App\Providers\SqlDebugServiceProvider::class,

    ],

3: 在 中 boot 方法中增加 SQL 监听服务

\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);
        }
    }
    $tmp = vsprintf($tmp, $qBindings);
    $tmp = str_replace("\\", "", $tmp);
    \Log::debug('[execution time: ' . $query->time . 'ms] ' . $tmp);
});

4: 会发现在 /storage/logs/ 目录下生成对应的 SQL 文件



所属网站分类: 技术文章 > 博客

作者:sdjsdh

链接:http://www.phpheidong.com/blog/article/3265/c85f16156213819121fc/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)