实现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 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 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
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
python实现图片文件批量重命名
2020/03/23 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
css sprite简单实例
2016/05/23 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
日语求职信范文
2013/12/17 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
职工运动会感言
2014/02/07 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
Python装饰器的练习题
2021/11/23 Python