实现laravel 插入操作日志到数据库的方法


Posted in PHP onOctober 11, 2019

1 . 创建一个中间件

执行: php artisan make:middleware OperationLog

2 . 在中间件中编写一个writeLog() 或者直接写在handle里面

<?php

namespace App\Http\Middleware;

use App\User;
use Closure;
use Illuminate\Support\Facades\Auth;

class OperationLog
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    $input = $request->all(); //操作的内容
    $path = $request->path(); //操作的路由
    $method = $request->method(); //操作的方法
    $ip = $request->ip(); //操作的IP
    $usernum = $request->usernum; //操作人(要自己获取)
    self::writeLog($usernum,$input,$path,$method,$ip);

    return $next($request);
  }
  public function writeLog($usernum,$input,$path,$method,$ip){

    $user = User::where('usernum',$usernum)->first();

    if($user) {
      $user_id = $user->userid;
    }

    $log = new \App\Models\OperationLog();
    $log->setAttribute('user_id', $user_id);
    $log->setAttribute('path', $path);
    $log->setAttribute('method', $method);
    $log->setAttribute('ip', $ip);
    $log->setAttribute('input', json_encode($input, JSON_UNESCAPED_UNICODE));
    $log->save();
  }
}

3 .创建一个OperationLog模型(这里我放在Models文件夹下了)

执行 : php artisan make:model Models\OperationLog

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class OperationLog extends Model
{

  //定义表
  protected $table = "operation_log";

  //定义主键
  protected $primaryKey = "id";
}

4 . 将中间件注册到Kernel.php 文件

/**
 * The application's global HTTP middleware stack.
 *
 * 这些中间件是在对应用程序的每次请求中运行的
 *
 * @var array
 */
protected $middleware = [
    .......,
    .......,
    .......,
    \App\Http\Middleware\OperationLog::class,
  ];

大功告成…

以上这篇实现laravel 插入操作日志到数据库的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
提取HTML标签
Oct 09 PHP
在PHP中执行系统外部命令
Oct 09 PHP
PHP通用检测函数集合
Feb 08 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
dedecms中使用php语句指南
Nov 13 PHP
PHP经典面试题集锦
Mar 19 PHP
PHP判断是否为空的几个函数对比
Apr 21 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
laravel 获取当前url的别名方法
Oct 11 #PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 #PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 #PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 #PHP
零基础php编程好学吗
Oct 11 #PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 #PHP
PHP与SQL语句写一句话木马总结
Oct 11 #PHP
You might like
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
input框中的name和id的区别
2016/11/16 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
运动检测ViBe算法python实现代码
2018/01/09 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
附答案的Java面试题
2012/11/19 面试题
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
师范生自我鉴定范文
2013/10/05 职场文书
给医务人员表扬信
2014/01/12 职场文书
一年级学生评语
2014/04/23 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
SQL Server 中的事务介绍
2022/05/20 SQL Server