внешний ключ не создан с миграцией laravel - PullRequest
0 голосов
/ 13 апреля 2020

Я хотел бы добавить внешний ключ в таблицы пользователей:

у пользователя есть город (ville по-французски), и в городе может быть много пользователей:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('adresse');

        //un user à une seule ville
        //une ville peut avoir plusieurs users
        $table->unsignedBigInteger('villes');

        $table->foreign('villes_id')->references('id')->on('villes');
        ...


        $table->timestamps();
    });
}

my миграция villes (город)

public function up()
{
    Schema::create('villes', function (Blueprint $table) {
        $table->id();
        $table->string('nom',100);
        $table->integer('cp');
        $table->string('pays',50);
        $table->timestamps();
    });
}

Я переименовал миграции (я не знаю, хорошо ли это делать?), и это порядок моих миграций, как вы можете видеть, я создаю виллы перед пользователями :

enter image description here

У меня есть эта ошибка в терминале:

Подсветка \ База данных \ QueryException

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1072 Ключевого столбца 'villes_id' в таблице не существует (SQL: изменить таблицу users добавить ограничение users_villes_id_foreign ссылки на внешний ключ (villes_id) villes (id))

1 Ответ

1 голос
/ 13 апреля 2020

Это не работает, потому что вы устанавливаете внешний ключ для столбца, который не существует. Имя столбца villes, но ваш внешний ключ установлен на villes_id.

Измените имя столбца следующим образом:

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('adresse');

    $table->unsignedBigInteger('villes_id');
    $table->foreign('villes_id')->references('id')->on('villes');
    // ...

    $table->timestamps();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...