• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel框架实现利用监听器进行sql语句记录功能

    本文实例讲述了Laravel框架实现利用监听器进行sql语句记录功能。分享给大家供大家参考,具体如下:

    利用监听器进行sql语句记录

    1、监听sql语句的事件类已经定义,直接创建监听器类即可:

    # 监听sql
    make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted
    
    

    2、监听器类代码

    ./app/Listeners/QueryListener.php

    ?php
    namespace App\Listeners;
    use Illuminate\Database\Events\QueryExecuted;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use App\Http\Models\OperationLog;
    class QueryListener
    {
      /**
       * Create the event listener.
       *
       * @return void
       */
      public function __construct()
      {
        //
      }
      /**
       * Handle the event.
       *
       * @param QueryExecuted $event
       * @return void
       */
      public function handle(QueryExecuted $event)
      {
        $sql = str_replace("?", "'%s'", $event->sql);
        $log = vsprintf($sql, $event->bindings);
        # 此处$uid定义是依赖于中间件记录操作日志代码
        $uid = isset($_SERVER['admin_uid']) ? $_SERVER['admin_uid'] : 0;
        if('select' != substr($log , 0 , 6)){
          if('insert into `operationLog`' != substr($log , 0 , 26)){
            $OperationLog = new OperationLog();
            $OperationLog->uid = $uid;
            $OperationLog->sql = $log;
            $OperationLog->input = '';
            $OperationLog->save();
          }
        }
      }
    }
    
    

    3、引入监听器

    ./app/Providers/EventServiceProvider.php

    protected $listen = [
        ...
        \Illuminate\Database\Events\QueryExecuted::class => [
          'App\Listeners\QueryListener'
        ],
        ...
      ];
    
    

    此时进行操作时就会记录sql日志

    相关文章:

    Laravel框架实现利用中间件进行操作日志记录功能

    更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • Laravel SQL语句记录方式(推荐)
    • Laravel5.* 打印出执行的sql语句的方法
    • Laravel框架执行原生SQL语句及使用paginate分页的方法
    • laravel实现查询最后执行的一条sql语句的方法
    • Laravel使用原生sql语句并调用的方法
    • laravel 获取某个查询的查询SQL语句方法
    • Laravel 使用查询构造器配合原生sql语句查询的例子
    • Laravel中如何轻松容易的输出完整的SQL语句
    上一篇:Laravel框架实现利用中间件进行操作日志记录功能
    下一篇:PHP简单实现记录网站访问量功能示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Laravel框架实现利用监听器进行sql语句记录功能 Laravel,框架,实现,利用,监听器,