У меня есть приложение, в котором пользователи принадлежат к команде. Вот мой тест:
/** @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
usersadd constraintusers_team_id_foreignforeign key (team_id) referencesteams(id) on delete cascade on update cascade)
Я не уверен, что не так, поскольку у меня есть другие внешние ключи, настроенные таким же образом на других таблицах, и они работают нормально. У меня все отношения настроены правильно.
миграция групп после






Установите групповую миграцию на более ранний срок, до того, как произойдет миграция пользовательской таблицы. В противном случае не существует таблицы групп, на которую можно ссылаться при создании пользовательской таблицы, и, следовательно, возникает ошибка.
IE
Schema::create('teams', function (Blueprint $table) {...}
ТОГДА
Schema::create('users', function (Blueprint $table) {...}
Глупый вопрос, но группы переходят на более ранний этап миграции, чем пользователи? IE - это команда на самом деле таблица, когда запускаются пользователи?