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

Laravel 11如何指定Sanctum自定义模型与多Schema表?

Laravel 11 多Schema架构下Sanctum自定义AccessToken模型配置方案

以下是解决该问题的具体步骤:

1. 确认自定义AccessToken模型的正确性

确保你的CustomPersonalAccessToken模型正确继承Sanctum基础模型,并且准确指定带Schema的表名(注意与数据库实际表名的大小写匹配,通常建议用小写格式):

namespace App\Models;

use Laravel\Sanctum\PersonalAccessToken as SanctumPersonalAccessToken;

class CustomPersonalAccessToken extends SanctumPersonalAccessToken
{
    // 格式为「schema名称.表名」,需与数据库实际结构一致
    protected $table = 'vendorinv.personal_access_tokens';
}

2. 通过Sanctum配置文件指定模型

Laravel 11中推荐通过配置文件设置自定义模型,比在ServiceProvider中配置更稳定:

  • 首先发布Sanctum的配置文件:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  • 打开生成的config/sanctum.php文件,找到personal_access_token_model配置项,替换为你的自定义模型类:
'personal_access_token_model' => App\Models\CustomPersonalAccessToken::class,

3. 清除配置缓存

Laravel 11默认启用配置缓存,修改配置后必须清除缓存才能生效:

php artisan config:clear
php artisan cache:clear

4. 验证配置生效

可以在路由或控制器中打印Sanctum当前使用的模型类来验证:

dd(Sanctum::personalAccessTokenModel());

如果输出为你的CustomPersonalAccessToken类名,说明配置成功,系统会自动使用指定的Schema和表名。

若仍有问题,检查以下两点:

  • 数据库中vendorinv.personal_access_tokens表是否存在,结构是否与Sanctum默认表一致
  • 确保没有其他代码(如自定义认证守卫、中间件)硬编码使用默认的PersonalAccessToken模型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:22:42