为了账号安全,请及时绑定邮箱和手机立即绑定

变体字段 id 大小大于 1 的 Laravel 变体表

变体字段 id 大小大于 1 的 Laravel 变体表

PHP
qq_笑_17 2023-03-26 14:25:22
我有一个具有以下结构的个人访问令牌表:public function up(){    Schema::create('personal_access_tokens', function (Blueprint $table) {        $table->bigIncrements('id');        $table->morphs('tokenable');        $table->string('name');        $table->string('token', 64)->unique();        $table->text('abilities')->nullable();        $table->timestamp('last_used_at')->nullable();        $table->timestamps();    });}现在,当我有一个自动递增的整数作为我的用户 ID 将在此表中存储访问令牌时,这工作正常,但我已将我的用户 ID 更改为 uuid。现在,由于tokenable_id无法存储 uuid(我认为),在创建personal_access_tokens时出现以下错误"SQLSTATE[01000]: Warning: 1265 Data truncated for column 'tokenable_id' at row 1 (SQL: insert into `personal_access_tokens` (`name`, `token`, `abilities`,     `tokenable_id`, `tokenable_type`, `updated_at`, `created_at`) values (my-token,      ef16e51c374d0a2dddf029b29f59ae62eb518c64f2f19945f7adc2cd67548ca7, [\"*\"],      96481014-efb0-42ce-9037-1f256c074976, App\\User,      2020-05-15 21:08:39, 2020-05-15 21:08:39))",知道如何更改 tokenable_id 字段以接受 uuid 吗?
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

由于列的数据类型必须匹配,并且模型的主键User具有uuid格式,因此morphs()在这种情况下该方法对您不起作用。您可以手动创建列,正如您在评论中指出的那样,但是(从 laravel 5.8 版开始)该uuidMorphs()方法也可用。

创建列 可用的列类型


$table->morphs('taggable');

添加taggable_id UNSIGNED BIGINTtaggable_type VARCHAR等效列。


$table->uuidMorphs('taggable');

添加taggable_id CHAR(36)taggable_type VARCHAR(255) UUID等效列。


查看完整回答
反对 回复 2023-03-26
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

上面的答案是正确答案,我想补充一下,你也可以使用

            $table->ulidMorphs('taggable');

对于那些使用 ulid id 而不是 uuid 的人,


查看完整回答
反对 回复 2023-03-26
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信