You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Sanctum createToken方法错误插入自定义tokens表问题排查

Laravel Sanctum 令牌存储表错误问题解决

问题原因

你在User模型中自定义的tokens()关联方法覆盖了Sanctum自带的同名关联。Laravel Sanctum的HasApiTokens trait内部已经定义了一个tokens()方法,该方法关联的是PersonalAccessToken模型(对应personal_access_tokens表),用于管理Sanctum签发的API令牌。当你自己定义了同名的tokens()方法后,Sanctum的默认关联被覆盖,调用createToken()时就会使用你自定义的Token模型和tokens表,导致插入表错误。

解决步骤

  • 重命名自定义关联方法:将User模型中的tokens()改为不会冲突的名称,比如thirdPartyTokens(),这样既保留你自己的第三方令牌关联,又不会影响Sanctum的正常工作:
    public function thirdPartyTokens()
    {
        return $this->hasMany(Token::class);
    }
    
  • 确认Sanctum Trait已正确引入:检查User模型顶部是否引入了HasApiTokens trait,这是Sanctum实现API令牌功能的核心依赖:
    use Laravel\Sanctum\HasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens, HasFactory, Notifiable;
    
        // ... 其他模型代码
    }
    
  • 清除应用缓存(可选):如果修改后问题仍存在,执行以下命令清除Laravel的配置和模型缓存,确保关联关系生效:
    php artisan optimize:clear
    

内容的提问来源于stack exchange,提问作者SaladeDeFruits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:25:45