#laravel #foreign-keys #database-migration #laravel-relations
#laravel #внешние ключи #база данных-миграция #laravel-отношения
Вопрос:
Когда вы применяете внешний ключ с помощью laravel, он переносится с помощью этого типа ошибки
«Ограничение внешнего ключа неправильно сформировано»
Структура миграции по умолчанию
User Table
---------
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
Chat Table
---------
Schema::create('chats', function (Blueprint $table) {
$table->id();
$table->integer('user_id');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
Ответ №1:
Это происходит потому, что размер нашего столбца не должен быть точно таким же, посмотрите ниже.
$table->id();
This will create a big integer
И
$table->integer('user_id');
This will create a small integer that's why Our foreign key relations fails
Как исправить эту проблему
$table->unsignedBigInteger('user_id');
или
$table->foreignId('user_id')->constrained();
Добавьте unsignedBigInteger и ваша проблема будет решена.
Комментарии:
1. вы также можете использовать
$table->foreignId('user_id')
2. @apokryfos вы правы, это из laravel-7. » $table-> foreignId(‘user_id’)-> constrainted(); »