問題
最終ログイン日時を取得したい
方法
①usersテーブルに最終ログイン日時を保存するカラム追加
②「app/Http/Controllers/Auth/LoginController.php」を編集
これだけ!
手順
①usersテーブルに最終ログイン日時を保存するカラム追加
ターミナルで↓を入力
php artisan make:migration add_user_table_1columns --table=users
↓テーブルに追加するカラムを記入
database/migrations/2024_05_05_165609_add_user_table_1columns.php
public function up()
{
Schema::table('users', function (Blueprint $table) {
// ⭐️追記↓
$table->dateTime('last_login_at')->nullable()->after('updated_at');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
// ⭐️追記↓
$table->dropColumn('last_login_at');
});
}
※down()メソッド
テーブルを削除するための処理を記述する部分で、rollbackを実行したときに走る。
downメソッドは新規登録の場面では既に記述されているが、カラムの追加や削除を行うときは記述する必要がある。
記述の仕方は、upメソッドに記述したカラムに対応したdropColumnを記述するだけ。
参考
down()メソッド
↓
ターミナル
php artisan migrate
↓
OK!
参考:カラム追加
②「app/Http/Controllers/Auth/LoginController.php」を編集
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
// ⭐️↓追記①
use Illuminate\Http\Request;
// ⭐️↑追記
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
// ⭐️↓追記②
protected function authenticated(Request $request, $user)
{
$user->last_login_at = now();
$user->save();
}
// ⭐️↑追記
}
追記①:use Illuminate\Http\Request;
use Illuminate\Http\Request;
上記↑は、以下↓のファイルを呼び出している
vendor/laravel/framework/src/Illuminate/Http/Request.php
追記②:authenticated
「authenticated」はLoginController内でより「カスタマイズ」したい時に使うツールみたいなもの。
今回はこのメソッド内に、「ログインした日時を取得→DBへ保存」の動きをつけている。
authenticatedの解説
参考記事