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
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
浅析php学习的路线图
Jul 10 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
php获取根域名方法汇总
Oct 28 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
php session的应用详细介绍
Mar 22 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计算排列组合的方法
2013/11/13 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
JS 控件事件小结
2012/10/31 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
python的mysqldb安装步骤详解
2017/08/14 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Django框架视图函数设计示例
2019/07/29 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
pycharm的python_stubs问题
2020/04/08 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
python中id函数运行方式
2020/07/03 Python
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
入党自我评价优缺点
2014/01/25 职场文书
运动会稿件300字
2014/02/14 职场文书
就业协议书范本
2014/04/11 职场文书
环保标语大全
2014/06/12 职场文书
部队2015年终工作总结
2015/04/02 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
消防隐患整改通知书
2015/04/22 职场文书
学校捐书活动总结
2015/05/08 职场文书
2015小学师德工作总结
2015/07/21 职场文书