Php 变形字段id大于1的Laravel变形表
我有一个具有以下结构的个人访问令牌表:Php 变形字段id大于1的Laravel变形表,php,laravel,uuid,Php,Laravel,Uuid,我有一个具有以下结构的个人访问令牌表: public function up() { Schema::create('personal_access_tokens', function (Blueprint $table) { $table->bigIncrements('id'); $table->morphs('tokenable'); $table->string('name'); $table-&g
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。现在,我在创建personal_access_令牌时遇到以下错误,原因是可令牌的_id无法存储uuid(我想)
你知道我如何更改tokenable_id字段以接受uuid吗?因为列的数据类型必须匹配,并且
用户
模型的主键具有uuid
格式,所以morps()
方法在这种情况下不适用于你。您可以手动创建列,正如您在注释中所指出的,但是(自laravel版本5.8以来,uuidMorphs()
方法也可用
可用列类型
添加
taggable_id
UNSIGNED BIGINT和taggable_type
VARCHAR等效列
添加
taggable_id
CHAR(36)和taggable_type
VARCHAR(255)UUID等效列
我刚找到
$table->uuidMorphs('taggable')代码>添加taggable_id
CHAR(36)和taggable_type
VARCHAR(255)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))",
$table->morphs('taggable');
$table->uuidMorphs('taggable');