Невозможно добавить ограничение внешнего ключа в Laravel

У меня есть приложение, в котором пользователи принадлежат к команде. Вот мой тест:

/** @test */
public function it_has_many_users()
{
    $team = factory(Team::class)->create();
    $users = factory(User::class, 3)->create([
        'team_id' => $team->getKey(),
    ]);

    $this->assertEquals(3, $team->users->count());
}

У меня есть настройка внешнего ключа в таблице пользователей, например:

Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('team_id')->nullable();

        $table->foreign('team_id')
            ->references('id')
            ->on('teams')
            ->onUpdate('cascade')
            ->onDelete('cascade');
    });

Миграция — это еще не все, но для простоты я включил только необходимый код. Вот моя teams миграция:

Schema::create('teams', function (Blueprint $table) {
    $table->bigIncrements('id');
});

Когда я запускаю свой тест, я получаю эту ошибку:

Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table users add constraint users_team_id_foreign foreign key (team_id) references teams (id) on delete cascade on update cascade)

Я не уверен, что не так, поскольку у меня есть другие внешние ключи, настроенные таким же образом на других таблицах, и они работают нормально. У меня все отношения настроены правильно.

Глупый вопрос, но группы переходят на более ранний этап миграции, чем пользователи? IE - это команда на самом деле таблица, когда запускаются пользователи?

Watercayman 02.07.2019 18:38

миграция групп после

L. Fox 02.07.2019 18:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Установите групповую миграцию на более ранний срок, до того, как произойдет миграция пользовательской таблицы. В противном случае не существует таблицы групп, на которую можно ссылаться при создании пользовательской таблицы, и, следовательно, возникает ошибка.

IE

Schema::create('teams', function (Blueprint $table) {...}

ТОГДА

 Schema::create('users', function (Blueprint $table) {...}

Другие вопросы по теме