在 Laravel Passport 中将用户模型主键 ID 更改为另一个
Posted
技术标签:
【中文标题】在 Laravel Passport 中将用户模型主键 ID 更改为另一个【英文标题】:Change USER Model Primary key ID to another in Laravel Passport 【发布时间】:2019-12-18 10:41:41 【问题描述】:我有一个项目,我在我的 User.php 模型文件中使用以下命令将用户模型主键从“id”更改为“MemberX”:
受保护的 $primaryKey = 'MemberID'
但我的 Passport accessToken 表仍然使用“id”。我想要“MemberX”
身份证
user_id :::::这里我想要 MemberID 而不是 id
client_id 名称 范围 撤销 created_at 更新时间 expires_at
【问题讨论】:
为什么 Passport 表使用什么很重要? (为什么不使用标准的 Laravel 命名约定?) 什么护照表使用它反映在令牌中。令牌包含“id”,我想将主键 id 更改为另一个键 【参考方案1】:也许您应该检查 laravel/config/auth.php 上的驱动程序是否有 eloquent
而不是 database
?
'providers' => [
'users' => [
'driver' => 'eloquent', //instead of database
'model' => App\User::class,
],
database
使用 DatabaseUserProvider
,find
方法仅在 id
列上查找。
eloquent
使用EloquentUserProvider
,如果在查看id
之前定义了$primaryKey,find
方法会查看主键。
【讨论】:
【参考方案2】:将此代码添加到您的User model
return $this->hasMany(Passport::clientModel(), 'user_id', 'MemberID');
【讨论】:
public function clients() return $this->hasMany(Passport::clientModel(), 'user_id', 'c_pk_user_id');以上是关于在 Laravel Passport 中将用户模型主键 ID 更改为另一个的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Passport:发送令牌请求时的附加模型条件
[PHP] 自定义 laravel/passport 的误区讲解
Laravel Passport - 保护不同用户类型的路由
Laravel Passport使用Axios 401未认证的API消耗自己的API.