首页 > 编程 > PHP > 正文

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

2019-11-21 19:46:21
字体:
来源:转载
供稿:网友

1 . 创建一个中间件

执行: php artisan make:middleware OperationLog

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

<?phpnamespace 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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表