【PHP/Laravel】usersテーブル以外で認証した場合の主キー

php-laravel

状況

usersのemailとpasswordでログインではなく、別テーブルのidとpasswordでログインしたい場合。
カラムをidからuser_idなどに変更した場合に認証が上手くいかない。

主キーを明示的に変更してなかった

ORMであるEloquentは、そもそも主キーのカラムはidであると想定。よって、別カラム名を設定する場合には、config/auth.phpなどの設定の他に、Modelに主キーを明示してやる必要がある
これが抜けていた。ちなみに、増分整数値も想定しているので、非インクリメント、非数値(整数値)でない場合にも明示する必要がある。

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    /**
     * テーブルに関連付ける主キー
     */
    protected $primaryKey = 'user_id';
}
public $incrementing = false;//自動増分しない
protected $keyType = 'string';//整数でない

以上

参照

Laravel 9.x Eloquentの準備

関連

@extends(‘adminlte::auth.login’)
AdminLTE v3.2.0のインストール
Laravelのエスケープ処理は簡単
リクエストパラメータを限定して受け取る
CSV出力を簡単に試す場合
単純に開発でAPI側のデバッグしたい時

Laravel, php

Posted by 異世界攻略班