Вы пытаетесь назначить ограничение внешнего ключа для столбца integer
, который отличается от столбцов unsigned
, которые Laravel использует для своих идентификаторов.
В вашем DiscordOAuths
Вы должны заменить $table->integer('id')->unique();
на $table->bigIncrements('id');
или новый метод, добавленный в Laravel 7 $table->id();
, который является псевдонимом предыдущего.
Ваш столбец discord_id
в users
миграция также должна быть столбцом без знака. Вы должны определить его, используя $table->unsignedBigInteger('discord_id');
или его псевдоним, который поставляется с Laravel 7: $table->foreignId('discord_id');
Таким образом, ваши миграции будут выглядеть так:
Для DiscordOAuths
public function up()
{
Schema::create('discord_o_auths', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->id();
$table->string('access_token')->unique();
$table->string('refresh_token')->unique();
$table->bigInteger('token_expiration');
$table->timestamps();
});
}
А для users
было бы так:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->id();
$table->boolean('admin')->default(false);
$table->integer('color_scheme')->default(0);
$table->rememberToken();
$table->timestamps();
});
Schema::table('users', function($table) {
$table->engine = "InnoDB";
$table->foreignId('discord_id');
$table->foreign('discord_id')->references('id')->on('discord_o_auths');
});
}