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