Laravel 5.8 Схема добавления внешнего ключа не работает
Я пытаюсь создать внешние ключи в Laravel 5.8, и при переносе таблицы с помощью Artisan внешний ключ не задан. в cities
стол и provinces
таблица, все поля id являются целыми числами без знака. Я работаю с wamp64 на Windows 10.
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('city_id')->unsigned();
$table->integer('province_id')->unsigned();
// table Foreign Key
$table->foreign('city_id')->references('id')->on('cities');
$table->foreign('province_id')->references('id')->on('provinces');
});
}
1 ответ
Решение
Потому что ты уже users
строки в вашем users database table
, чтобы добиться этого, вы должны сделать эти новые поля city_id
а также province_id
как nullable
в качестве значения по умолчанию.
поэтому ваша миграция должна быть такой:
public function up()
{
Schema::table('users', function (Blueprint $table) {
// I have added here nullable for both city_id and province_id
$table->integer('city_id')->unsigned()->nullable();
$table->integer('province_id')->unsigned()->nullable();
// table Foreign Key
$table->foreign('city_id')->references('id')->on('cities');
$table->foreign('province_id')->references('id')->on('provinces');
});
}