Laravel - 上次登录日期和时间戳

2022-08-30 11:55:52

我知道有自动插入的字段(例如updated_atcreated_at),但我想知道是否有雄辩的方法时间戳()或Laravel方法来生成时间戳?

例如,我想在每次用户登录我的系统时记录一个时间戳并将其存储到数据库中,以便我们可以查看每个用户的上次登录日期和时间详细信息。


答案 1

在Laravel 5.2+(也在5.6上测试)中,过程略有不同。首先,将侦听器添加到事件服务提供程序:

protected $listen = [
    'Illuminate\Auth\Events\Login' => [
        'App\Listeners\LogSuccessfulLogin',
    ],
];

然后做:

php artisan event:generate

这将在应用程序/侦听器中创建新的侦听器。现在,编辑监听器以触摸用户表中last_login列中的日期:

public function handle(Login $event)
{
    $event->user->last_login = date('Y-m-d H:i:s');
    $event->user->save();
}

确保 Artisan 创建的监听器在顶部具有正确的命名空间。对于此特定情况,侦听器中的正确命名空间应为:

use Illuminate\Auth\Events\Login;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

答案 2

只需将此代码添加到您的应用程序\Http\控制器\身份验证\登录控制器中.php

在控制器的顶部:

use Carbon\Carbon;
use Illuminate\Http\Request;

在您的控制器内部,将此功能放在下面:

public function authenticated(Request $request, $user) {
    $user->last_login = Carbon::now()->toDateTimeString();
    $user->save();
}

推荐