npm 如何在Prisma ORM中基于条件将表列与多个表建立关系

wnrlj8wa  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(180)

我有个模特

model image {
  id                Int       @id @default(autoincrement())
  entityId          Int
  entityTypeId      Int
  imageUrl          String
  recordStatusRefId Int?
  createdBy         Int?
  createdOn         DateTime  @default(now())
  updatedBy         Int?
  updatedOn         DateTime?
  isDeleted         Int       @default(0)
}

当entityTypeId = 1时,我需要一个entityId到村庄表的关系,当entityTypeId = 2时,我需要将entityIdMap到属性表
这在PRISMA ORM中是可行的吗
我试图定义两个关系,但它得到的错误

atmip9wb

atmip9wb1#

根据另一个字段的值Map关系目前在Prisma中是不可能的,在我看来,除非它是NoSQL数据库,否则它不在ORM的范围内。
作为一种解决方法,您可以在应用程序层而不是数据库层中处理此问题。我想到了两个解决方案:
1.**推荐方式:**创建2个独立的可选关系字段(e.例如villageEntityIdpropertyEntityId)。这样,您必须手动处理创建和更新逻辑,但在调用image模型时可以轻松地填充查询。
1.**不推荐:**创建entityId字段,不指定关系,根据您的entityTypeId值手动调用第二次查询村庄或房产表,获取所需数据。通过这种方式,您基本上是在管理应用程序层中的关系,因此,如果您必须在大型集合中填充数据,那么这并不是很好。

相关问题