Laravel 9 Sanctum:如何修改personal_access_tokens表的内置迁移
修改Laravel Sanctum的Personal Access Tokens表适配UUID用户表
有两种靠谱的方法解决这个问题,你可以根据项目阶段选择:
方法一:替换默认迁移文件(适合新项目/未执行原迁移的场景)
如果还没运行过Sanctum的迁移,直接替换迁移文件最省事:
- 先确认数据库
migrations表中没有2019_12_14_000001_create_personal_access_tokens_table这条记录,要是有就删掉(已经执行过原迁移的话,跳过这个方法看方法二)。 - 生成自己的迁移文件:
php artisan make:migration create_personal_access_tokens_table - 打开新生成的迁移文件,替换默认内容为Sanctum原迁移的代码,把
$table->morphs('tokenable');改成$table->uuidMorphs('tokenable');,完整代码示例:use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('personal_access_tokens', function (Blueprint $table) { $table->id(); $table->uuidMorphs('tokenable'); // 替换为uuidMorphs $table->string('name'); $table->string('token', 64)->unique(); $table->text('abilities')->nullable(); $table->timestamp('last_used_at')->nullable(); $table->timestamp('expires_at')->nullable(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('personal_access_tokens'); } }; - 执行迁移:
php artisan migrate
方法二:新增修改字段的迁移(适合已执行原迁移的项目)
如果已经跑过原迁移,不想改动已有的迁移记录,就新增一个迁移来修改字段:
- 生成修改迁移文件:
php artisan make:migration modify_tokenable_fields_in_personal_access_tokens_table - 在迁移文件的
up方法里删除原有tokenable字段,再添加UUID版本的;down方法用于回滚操作:use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::table('personal_access_tokens', function (Blueprint $table) { $table->dropMorphs('tokenable'); $table->uuidMorphs('tokenable'); }); } public function down() { Schema::table('personal_access_tokens', function (Blueprint $table) { $table->dropUuidMorphs('tokenable'); $table->morphs('tokenable'); }); } }; - 执行迁移:
php artisan migrate
注意:如果项目已经有用户和令牌数据,修改字段前一定要备份数据库!原
tokenable_id是整数类型,改成UUID(字符串类型)后,要确保现有令牌的tokenable_id能正确匹配用户表的UUID(比如之前用户表是整数ID后来改成UUID,可能需要先迁移关联数据)。
内容的提问来源于stack exchange,提问作者drakanor
相关产品推荐
相关产品推荐

