实现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 相关文章推荐
PHP编程与应用
Oct 09 PHP
实用函数8
Nov 08 PHP
php扩展ZF――Validate扩展
Jan 10 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
php动态生成函数示例
Mar 21 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
js闭包用法实例详解
2016/12/13 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python的Flask框架中web表单的教程
2015/04/20 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python发送告警邮件脚本
2018/09/17 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
公司年会搞笑主持词
2014/03/24 职场文书
机械机修工岗位职责
2014/08/03 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
《三国志》赏析
2019/08/27 职场文书
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android