У меня есть приложение, в котором пользователи принадлежат команде.Вот мой тест:
/** @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');
});
Когда я запускаю свой тест, я получаю эту ошибку:
Подсветка \ База данных \ QueryException: SQLSTATE [HY000]: Общая ошибка:1215 Невозможно добавить ограничение внешнего ключа (SQL: изменить таблицу users
добавить ограничение users_team_id_foreign
ссылки на внешний ключ (team_id
) teams
(id
) при каскаде удаления при каскаде обновлений)
Я не уверен, что не так, так как у меня есть другие внешние ключи, настроенные таким же образом для других таблиц, и они работают нормально.У меня все отношения настроены правильно.