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


Posted in PHP onJune 06, 2018

本文实例讲述了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
杏林同学录(一)
Oct 09 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php日历制作代码分享
Jan 20 PHP
php函数实现判断是否移动端访问
Mar 03 PHP
PHP面向对象详解(三)
Dec 07 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 #PHP
PHP实现的curl批量请求操作示例
Jun 06 #PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 #PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 #PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 #PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 #PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 #PHP
You might like
php 设计模式之 单例模式
2008/12/19 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
js实现五星评价功能
2017/03/08 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python解析模块(ConfigParser)使用方法
2013/12/10 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
python学生管理系统开发
2019/01/30 Python
Python简单I/O操作示例
2019/03/18 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
Python hashlib模块实例使用详解
2019/12/24 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
用python解压分析jar包实例
2020/01/16 Python
python中Django文件上传方法详解
2020/08/05 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
节约电力资源的建议书
2014/03/12 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
股东授权委托书范文
2014/09/13 职场文书
老公婚前保证书
2015/02/28 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
详解Python类和对象内容
2021/06/22 Python