【PHP/Laravel】usersテーブル以外で認証した場合の主キー
状況
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';//整数でない
以上
参照
関連
・@extends(‘adminlte::auth.login’)
・AdminLTE v3.2.0のインストール
・Laravelのエスケープ処理は簡単
・リクエストパラメータを限定して受け取る
・CSV出力を簡単に試す場合
・単純に開発でAPI側のデバッグしたい時