【发布时间】:2022-01-17 11:57:04
【问题描述】:
我正在创建一个锻炼应用程序,并希望对用户和锻炼计划之间的关系进行建模。一个用户可以多次创建一个程序。
这是我的 Prisma 模型:
model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
email String @unique
firstName String @db.VarChar(50)
lastName String @db.VarChar(50)
password String @db.VarChar(191)
programs ProgramEnrollment[]
}
model ProgramEnrollment {
program Program @relation(fields: [programId], references: [id])
programId Int // relation scalar field (used in the `@relation` attribute above)
user User @relation(fields: [userId], references: [id])
userId Int // relation scalar field (used in the `@relation` attribute
assignedAt DateTime @default(now())
@@id([programId, userId])
}
model Program {
id Int @id @default(autoincrement())
name String
users ProgramEnrollment[]
}
上面的效果很好,但是现在我想做的是让用户记录他们的个人程序结果,所以我添加了以下内容:
model ProgramEnrollment {
program Program @relation(fields: [programId], references: [id])
programId Int // relation scalar field (used in the `@relation` attribute above)
user User @relation(fields: [userId], references: [id])
userId Int // relation scalar field (used in the `@relation` attribute
assignedAt DateTime @default(now())
userProgram UserProgram[]
@@id([programId, userId])
}
model UserProgram {
id Int @id @default(autoincrement())
name String
userProgramEnrollment ProgramEnrollment @relation(fields: [programEnrollmentId], references: [id])
programEnrollmentId Int // relation scalar field (used in the `@relation` attribute above)
}
当我进行上述更改时,我收到以下错误:验证错误:参数references 必须仅引用相关模型ProgramEnrollment 中的现有字段。相关模型中不存在以下字段:id
为什么不允许我从多对多连接表创建一对多关系?
【问题讨论】:
标签: mysql database database-design prisma