【Laravel8系】ユーザのログイン日時を記録する

Laravel8系を使ったサイトの制作案件で、
ユーザをログイン順に表示することになりました。
はじめはSessionsテーブルのlast_activityの値を使って
実装できないかと考えたのですが、
SQL周りのプログラムが複雑になってしまいました。

そこでUsersテーブルにログイン日時を記録するカラムを作り、
それを使ってログイン順に並べ直して表示することにしました。

非常に簡単でしたので、今回はその方法を紹介します。

まず、Usersテーブルを作っているマイグレーションファイルに、
ログイン日時を記録するカラムを作成します。

その後、コマンドを実行するなりして、変更を反映します。

php artisan migrate:fresh --seed

※ 環境や状況により適宜修正してください
※ マイグレーションファイルを使っていない方は、直接データベースにカラムを作成してください

そして次は、ログイン時に日時を記録するよう以下のファイルを作成します。

Laravel8系の、Event Listenerという機能を使うことで、
ログイン時に任意の処理を挟むことができます。
https://laravel.com/docs/8.x/events

そして最後に上記のEvent Listenerが使えるよう設定を行います。

以上で、ログイン時に日時を記録することができるようになります。

なお上記は、Laravel8系にデフォルトで実装されている
認証機能を使った場合の方法です。
独自で認証機能を実装されている場合は、上手くいかない場合があります。

ABOUTこの記事をかいた人

フリーランスとして働く、フルスタックエンジニア 初崎 匠のサイト。仕事のことから趣味のアニメーション制作、英語学習など、様々なことを通じて、少しでも多くの人が幸せになれるような価値を提供できるよう挑戦し続けます。