每个FileUpload应该只有一个"父";项目草稿。
每个ProjectDraft应该有两个不同的可选字段,每个字段都可以引用一个FileUpload。
如果我在原始SQL中这样做,我可能会在ProjectDraft上有两个字段,每个字段都是可选的,并引用一个FileUpload(通过id(。
这是我当前的模式:
model ProjectDraft {
id String @id @default(cuid())
name String
heroImage FileUpload?
otherImage FileUpload?
}
model FileUpload {
id String @id @default(cuid())
fileKey String @unique
projectDraft ProjectDraft @relation(fields: [projectDraftId], references: [id])
projectDraftId String @unique
}
prisma format
最初想在FileUpload模型上创建一个ProjectDraft ProjectDraft[]
数组字段(我认为是一对多(,但这不是我想要的(这将允许FileUpload没有父级或多个父级(。
对于我当前的模式,prisma format
表示:
Error validating model "ProjectDraft": Ambiguous relation detected. The fields `heroImage` and `otherImage` in model `ProjectDraft` both refer to `FileUpload`. Please provide different relation names for them by adding `@relation(<name>).
我可以为ProjectDraft字段添加关系名称,但这两个关系最终在FileUpload上是相同的(因为每个FileUpload应该只有一个父级(。
我做错了什么?我觉得我错过了一个基本的概念。
如果要将多个字段引用到另一个模型,则必须定义一个关系名称。
model ProjectDraft {
id String @id @default(cuid())
name String
heroImageFileUploadId String?
otherImageFileUploadId String?
heroImage FileUpload? @relation("FileUploadHeroImage", fields: [heroImageFileUploadId], references: [id])
otherImage FileUpload? @relation("FileUploadOtherImage", fields: [otherImageFileUploadId], references: [id])
FileUpload FileUpload?
}
model FileUpload {
id String @id @default(cuid())
fileKey String @unique
projectDraft ProjectDraft @relation(fields: [projectDraftId], references: [id])
projectDraftId String @unique
ProjectDraftHeroImages ProjectDraft[] @relation("FileUploadHeroImage")
ProjectDraftOtherImages ProjectDraft[] @relation("FileUploadOtherImage")
}