laravel 7 用作 uuid 外键
laravel 7 using as uuid foreign key
我有两个 table,我都使用 UUID 生成一个 ID。
在那之后,我试图在第二个 table 中使用一个 id 作为外国人。如图所示
迁移确实接受了我正在做的事情但是当我插入数据时我得到这个错误
Illuminate/Database/QueryException with message 'SQLSTATE[01000]: Warning: 1265 Data truncated for column 'userId' at row 1
她是我的第一个 tables:
Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('userName')->unique();
$table->string('email')->unique();
$table->boolean('isVerified')->default(false);
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
第二个table外键
Schema::create('tableTwo', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->unsignedBigInteger('userId');
$table->foreign('userId')
->references('id')
->on('users')
->onDelete('cascade');
$table->timestamps();
});
你正在将一个整数列映射到 uuid 列,不同类型做 sql 约束无法完成...
你应该改变:
$table->unsignedBigInteger('userId');
至
$table->uuid('userId')->nullable(false);
更改代码
$table->unsignedBigInteger('userId');
至
$table->foreign('userId')
如果使用 laravel 8 你可以这样打字
$table->foreignUuid('user_id');
我有两个 table,我都使用 UUID 生成一个 ID。 在那之后,我试图在第二个 table 中使用一个 id 作为外国人。如图所示 迁移确实接受了我正在做的事情但是当我插入数据时我得到这个错误
Illuminate/Database/QueryException with message 'SQLSTATE[01000]: Warning: 1265 Data truncated for column 'userId' at row 1
她是我的第一个 tables:
Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('userName')->unique();
$table->string('email')->unique();
$table->boolean('isVerified')->default(false);
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
第二个table外键
Schema::create('tableTwo', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->unsignedBigInteger('userId');
$table->foreign('userId')
->references('id')
->on('users')
->onDelete('cascade');
$table->timestamps();
});
你正在将一个整数列映射到 uuid 列,不同类型做 sql 约束无法完成...
你应该改变:
$table->unsignedBigInteger('userId');
至
$table->uuid('userId')->nullable(false);
更改代码
$table->unsignedBigInteger('userId');
至
$table->foreign('userId')
如果使用 laravel 8 你可以这样打字
$table->foreignUuid('user_id');