Laravel8系を使ったサイトの制作案件で、
ユーザをログイン順に表示することになりました。
はじめはSessionsテーブルのlast_activityの値を使って
実装できないかと考えたのですが、
SQL周りのプログラムが複雑になってしまいました。
そこでUsersテーブルにログイン日時を記録するカラムを作り、
それを使ってログイン順に並べ直して表示することにしました。
非常に簡単でしたので、今回はその方法を紹介します。
まず、Usersテーブルを作っているマイグレーションファイルに、
ログイン日時を記録するカラムを作成します。
その後、コマンドを実行するなりして、変更を反映します。
1 |
php artisan migrate:fresh --seed |
※ 環境や状況により適宜修正してください
※ マイグレーションファイルを使っていない方は、直接データベースにカラムを作成してください
そして次は、ログイン時に日時を記録するよう以下のファイルを作成します。
Laravel8系の、Event Listenerという機能を使うことで、
ログイン時に任意の処理を挟むことができます。
https://laravel.com/docs/8.x/events
そして最後に上記のEvent Listenerが使えるよう設定を行います。
以上で、ログイン時に日時を記録することができるようになります。
なお上記は、Laravel8系にデフォルトで実装されている
認証機能を使った場合の方法です。
独自で認証機能を実装されている場合は、上手くいかない場合があります。