【问题标题】:model A references model B on two fields (but one to one) in prisma模型 A 在 prisma 中的两个字段(但一对一)上引用模型 B
【发布时间】:2022-10-13 18:18:13
【问题描述】:

每个 FileUpload 都应该有一个“父”ProjectDraft。

每个 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 应该只有一个父级)。

我究竟做错了什么?我觉得我在这里缺少一个基本概念。

【问题讨论】:

    标签: database-design prisma


    【解决方案1】:

    如果要将多个字段引用到其他模型,则必须定义关系名称。

    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")
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 2021-12-07
      • 2019-09-04
      相关资源
      最近更新 更多