laravel数据库切换

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

1 . 创建一个中间件

执行: php artisan make:middleware OperationLog

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • <?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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • <?php
  •  
  • namespace App\Models;
  •  
  • use Illuminate\Database\Eloquent\Model;
  •  
  • class OperationLog extends Model
  • {
  •  
  •   //定义表
  •   protected $table = "operation_log";
  •  
  •   //定义主键
  •   protected $primaryKey = "id";
  • }
  • 4 . 将中间件注册到Kernel.php 文件

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • /**
  •  * The application's global HTTP middleware stack.
  •  *
  •  * 这些中间件是在对应用程序的每次请求中运行的
  •  *
  •  * @var array
  •  */
  • protected $middleware = [
  •     .......,
  •     .......,
  •     .......,
  •     \App\Http\Middleware\OperationLog::class,
  •   ];
  • 大功告成…

    以上这篇实现laravel 插入操作日志到数据库的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。

    原文链接:https://blog.csdn.net/qq_26282869/article/details/81808558