Отношение "один ко многим" и "может ко многим" между двумя призматическими моделями
Я работаю над второстепенным проектом и столкнулся с проблемой, которую не знаю, как решить. Я создал две модели: одну для пользователя и одну для проекта. Связь между ними - многие-ко-многим, так как у многих пользователей может быть много проектов, но я также хотел бы добавить createdBy в модель Project, и это должно быть однозначно, поскольку каждый проект может иметь только одного пользователя. кто его создает. Вот так выглядят мои модели:
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
accounts Account[]
sessions Session[]
projects Project[]
Project Project[] @relation("userId")
}
model Project {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
name String
favourite Boolean @default(false)
archived Boolean @default(false)
users User[]
about String?
archivedAt String?
deletedAt String?
createdBy User @relation("userId", fields: [userId], references: [id])
userId String
}
Ошибка prisma migrate dev:
Шаг 1 Добавлен обязательный столбец
userId
кProject
таблица без значения по умолчанию. В этой таблице 2 строки, выполнить этот шаг невозможно.
Не уверен, что делаю неправильно, поскольку я в значительной степени новичок в моделировании db. Любая помощь будет оценена по достоинству.
1 ответ
Достигать
Many-to-Many
с
One-To-Many
вам нужно установить свой
schema.prisma
файл вроде:
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
projects Project[]
userProjects UserProjects[]
}
model Project {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
name String
favourite Boolean @default(false)
archived Boolean @default(false)
about String?
archivedAt String?
deletedAt String?
createdBy User @relation(fields: [user_id], references: [id])
user_id String
projectUsers UserProjects[]
}
model UserProjects {
project Project @relation(fields: [project_id], references: [id])
project_id Int
user User @relation(fields: [user_id], references: [id])
user_id String
@@id([project_id, user_id])
}
Он должен успешно мигрировать.