Laravel 变体 table 变体字段 ID 大小大于 1
Laravel morph table with morph field id size larger than one
我有一个个人访问令牌table,其结构如下:
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 并将在此 table 中存储访问令牌时,这工作正常,但我已将我的用户 ID 更改为 uuids。现在,由于 tokenable_id 无法创建 personal_access_tokens 时出现以下错误存储一个 uuid(我认为)
"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 吗?
由于列的数据类型必须匹配,并且您的 User
模型的主键具有 uuid
格式,因此 morphs()
方法不适用于您案件。您可以手动创建列,正如您在评论中指出的那样,但是(自 laravel 5.8 版起)uuidMorphs()
方法也可用。
Creating Columns
可用的列类型
$table->morphs('taggable');
添加 taggable_id
UNSIGNED BIGINT 和 taggable_type
VARCHAR 等效列。
$table->uuidMorphs('taggable');
添加 taggable_id
CHAR(36) 和 taggable_type
VARCHAR(255) UUID 等效列。
我有一个个人访问令牌table,其结构如下:
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 并将在此 table 中存储访问令牌时,这工作正常,但我已将我的用户 ID 更改为 uuids。现在,由于 tokenable_id 无法创建 personal_access_tokens 时出现以下错误存储一个 uuid(我认为)
"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 吗?
由于列的数据类型必须匹配,并且您的 User
模型的主键具有 uuid
格式,因此 morphs()
方法不适用于您案件。您可以手动创建列,正如您在评论中指出的那样,但是(自 laravel 5.8 版起)uuidMorphs()
方法也可用。
Creating Columns 可用的列类型
$table->morphs('taggable');
添加 taggable_id
UNSIGNED BIGINT 和 taggable_type
VARCHAR 等效列。
$table->uuidMorphs('taggable');
添加 taggable_id
CHAR(36) 和 taggable_type
VARCHAR(255) UUID 等效列。