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');
    });
}
Другие вопросы по тегам