1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel6】最終ログイン日時をDBに保存する方法

Posted at

問題

最終ログイン日時を取得したい

方法

①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

上記を追記しないとエラーが出る
スクリーンショット 2024-05-05 17.52.46.png

追記②:authenticated

「authenticated」はLoginController内でより「カスタマイズ」したい時に使うツールみたいなもの。
今回はこのメソッド内に、「ログインした日時を取得→DBへ保存」の動きをつけている。

authenticatedの解説

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?