实现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获取远程图片并把它保存到本地的代码
Apr 07 PHP
php adodb介绍
Mar 19 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
php牛逼的面试题分享
Jan 18 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
PHP内核探索之变量
Dec 22 PHP
详解Window7 下开发php扩展
Dec 31 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php简单中奖算法(实例)
Aug 15 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
js友好的时间返回函数
2016/08/24 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
Vue文件配置全局变量的实例
2018/09/06 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
Python截图并保存的具体实例
2021/01/14 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
JS原生实现轮播图的几种方法
2021/03/23 Javascript
学期研究性学习个人的自我评价
2014/01/09 职场文书
法律专业求职信
2014/05/24 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
文体活动总结
2015/02/04 职场文书
电工生产实习心得体会
2016/01/22 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
创业计划书之面包店
2019/09/12 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
muduo TcpServer模块源码分析
2022/04/26 Redis