[英]How to create one to many relationship from many to many join table in Prisma
我正在創建一個鍛煉應用程序,並想 model 用戶和鍛煉計划之間的關系。 一個用戶可以多次創建一個程序。
這是我的 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
必須僅引用相關 model ProgramEnrollment
中的現有字段。 相關model中不存在以下字段:id
為什么它不允許我從多對多連接表創建一對多關系?
我只需要稍微調整一下 UserProgram model 以考慮 ProgramEnrollment model 中的多字段 id。
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: [programEnrollment_programId, programEnrollment_userId], references: [programId, userId])
programEnrollment_programId Int
programEnrollment_userId Int
}
由於 ProgramEnrollment 使用兩個字段作為其 id,我們必須在 UserProgram model 中引用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.