当前位置: 首页 > 知识库问答 >
问题:

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

羊舌富
2023-03-14

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

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

共有3个答案

相化
2023-03-14

您可以观察auth.login事件并更新用户的上次登录时间。请参阅文档中的第一个示例,以了解如何准确完成您要做的事情。

Event::listen('auth.login', function($user) {
    $user->last_login = new DateTime;

    $user->save();
});

注意:在4.0中,事件名称为user.login。在4.1中,事件名称为auth.login

这真的取决于你把你的事件监听器放在哪里。如果您阅读“链接到文档”页面,它会说明:

所以,您知道如何注册事件,但您可能想知道在哪里注册它们。别担心,这是一个常见的问题。不幸的是,这是一个很难回答的问题,因为你几乎可以在任何地方注册一个活动!但是,这里有一些建议。同样,像大多数其他无融资创业代码一样,您可以在开始文件中注册事件,如app/start/global.php.

如果开始文件过于拥挤,可以创建一个单独的app/events.php文件,该文件包含在开始文件中。这是一个简单的解决方案,可以使事件注册与引导的其余部分保持干净的分离。如果您喜欢基于类的方法,可以在服务提供商中注册事件。因为这些方法都不是天生“正确”的,所以根据应用程序的大小选择一种您觉得合适的方法。

我个人的偏好是在服务提供商中注册他们,因为这将使他们保持隔离,对我来说,这是一种更“拉威尔”的做事方式。如果您需要有关服务提供商的帮助,请参阅此文档条目。

然而,如果你真的只是想尽快启动和运行一些东西,你可以很容易地在app/start/global.php中注册那个监听器

湛嘉歆
2023-03-14

只需将下面的代码添加到您的应用程序\Http\Controller\Auth\LoginController.php

在控制器的顶部:

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

在你的控制器里把这个功能放在下面:

public function authenticated(Request $request, $user) {
    $user->last_login = Carbon::now()->toDateTimeString();
    $user->save();
}
郑伟彦
2023-03-14

在Laravel 5.2中(也在5.6上测试),过程有点不同。首先,将您的侦听器添加到EventServiceProvider:

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

然后做:

php artisan event:generate

这将在app/Listeners中创建一个新的侦听器。现在编辑您的侦听器,以触摸用户表中最后一次登录列中的日期:

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;
 类似资料:
  • 问题内容: 想知道目录的上次修改日期何时更改。我修改了特定目录中的文件(通过FTP),但目录的LMD不变。应该如何运作? 问题答案: 当添加,删除或重命名文件或子目录时,目录本身上的mtime(修改时间)会更改。 修改目录中文件的内容不会更改目录本身,也不会更新文件或子目录的修改时间。如果更改目录的权限,则ctime会更改,而mtime不会。

  • 让我一起学习一个新的内建对象:日期(Date)。该对象存储日期和时间,并提供了日期/时间的管理方法。 例如,我们可以使用它来存储创建/修改时间,或者用来测量时间,再或者仅用来打印当前时间。 创建 创建一个新的 Date 对象,只需要调用 new Date(),在调用时可以带有下面这些参数之一: new Date() 不带参数 —— 创建一个表示当前日期和时间的 Date 对象: let now =

  • 日期和时间 日期、时间、时间戳的值支持ISO 8601格式,格式还包含了时区: CALL TIMESTAMP '2008-01-01 12:00:00+01:00'; 如果未设置时区,将使用系统中当前的时区。日期和时间信息存储在 H2 数据库文件,不包含时区信息。如果数据库打开使用另一个系统时区,日期和时间将是相同的。这意味着如果你存储的值“2000-01-01 12:00:00”在一个时区,然

  • PHP 中 DateTime 类的作用是在你读、写、比较或者计算日期和时间时提供帮助。除了 DateTime 类之外,PHP 还有很多与日期和时间相关的函数,但 DateTime 类为大多数常规使用提供了优秀的面向对象接口。它还可以处理时区,不过这并不在这篇简短的介绍之内。 在使用 DateTime 之前,通过 createFromFormat() 工厂方法将原始的日期与时间字符串转换为对象或使用

  • 必须 使用 Carbon 来处理日期和时间相关的操作。 Laravel 5.1 中文的 diffForHumans 可以使用 jenssegers/date。 Laravel 5.3 及以上版本的 diffForHumans,只需要在 config/app.php 文件中配置 locale 选项即可 : 'locale' => 'zh-CN',

  • 善意提醒 对于那些还没有注意到的读者,近来项目已经迁移到 github 上,你们可以在这个位置找到代码: https://github.com/miguelgrinberg/microblog。 我已经添加了标签指向每个教程步​​骤,为您提供便利。 时间戳的问题 我们 microblog 应用程序已经忽略很长时间的一个方面就是时间和日期的显示。 到目前为止,我们信任 Python 本身去渲染在我们