php Larevel -保存上次用户请求时间戳

vjrehmav  于 2022-12-17  发布在  PHP
关注(0)|答案(1)|浏览(112)

我想将用户与应用程序最后一次交互的日期时间保存在用户表中。
我用的是拉拉威尔8号。
我在用户表中添加了一列(last_interaction):

`Schema::create('users', function(Blueprint $table)
        {
            $table->engine = 'InnoDB';
            $table->integer('id', true);
            $table->string('firstname');
            $table->string('lastname');
            $table->string('username', 192);
            $table->string('email', 192);
            $table->string('password');
            $table->string('avatar')->nullable();
            $table->string('phone', 192);
            $table->integer('role_id');
            $table->boolean('statut')->default(1);
                        $table->datetime('last_interaction');
            $table->timestamps(6);
            $table->softDeletes();
        });
`

是否有可能更新用户表与每个请求完成!或者我应该只在登录时做(优化)。

iszxjhcz

iszxjhcz1#

你可以用这个命令php artisan make:middleware LastInteraction创建新的中间件

应用程序\Http\中间件\最后交互.php:

public function handle(Request $request, Closure $next)
{
    if (Auth::check()) {
        $user = Auth::user();
        $user->last_interacted = Carbon::now();
        $user->save();
    }

    return $next($request);
}

这会将last_interacted字段设置为当前时间,前提是此字段存在于迁移中。如果不存在,请创建一个。

应用程序\Http\内核.php

protected $middleware = [

    (...)

    \App\Http\Middleware\LastInteraction::class,
];

这将注册要全局应用于每个路由的中间件。

相关问题