# 初期
### usersにlast loginカラムを追加
mysql> describe users;
$ php artisan make:migration add_column_last_login_at_users_table –table=users
***_add_column_last_login_at_users_table.php
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
$table->timestamp('last_login_at')->nullable()->after('remember_token')->comment('最終ログイン');
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
$table->dropColumn('last_login_at');
});
}
$ php artisan migrate
mysql> describe users;
### Logined eventとLastLoginListeners listenerを作成
app/Providers/EventServiceProvider.php
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
// ログイン時にイベント発行
'App\Events\Logined' => [
// 最終ログインを記録するリスナー
'App\Listeners\LastLoginListener',
],
];
$ php artisan event:generate
### listenerで、lastlogin日時をDBに保存する
– event側は処理なし
app/Listeners/LastLoginListener.php
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
public function handle(Logined $event)
{
//
$user = Auth::user();
$user->last_login_at = Carbon::now();
$user->save();
}
### LoginControllerでeventを呼び込む
app/Http/Controllers/Auth/LoginController.php
use Illuminate\Http\Request;
use App\Events\Logined;
protected function authenticated(Request $request, $user)
{
event(new Logined());
}
mysql> select * from users;
+—-+———+————–+——————+——————-+————————————————————–+————————————————————–+———————+———————+———————+
| id | role_id | name | email | email_verified_at | password | remember_token | last_login_at | created_at | updated_at |
+—-+———+————–+——————+——————-+————————————————————–+————————————————————–+———————+———————+———————+
| 1 | 1 | 田中太郎 | tanaka@***.com | NULL | **** | **** | 2020-02-21 09:50:03 | 2020-02-20 08:51:14 | 2020-02-21 09:50:03 |
| 2 | 2 | 山田一郎 | yamada@***.com | NULL | **** | **** | NULL | 2020-02-20 08:52:15 | 2020-02-20 08:52:15 |
+—-+———+————–+——————+——————-+————————————————————–+————————————————————–+———————+———————+———————+
2 rows in set (0.00 sec)
公式ドキュメント:https://readouble.com/laravel/6.x/ja/authentication.html