php教程

超轻量级php框架startmvc

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

更新时间:2020-04-10 07:30:40 作者:startmvc
1.创建一个中间件执行:phpartisanmake:middlewareOperationLog2.在中间件中编写一个writeLog()或者直接

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 插入操作日志到数据库的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

laravel 插入 日志 数据库