Prisma2 如何将一对多和多对一联系起来?

时间:2021-08-01 19:47:38

标签: prisma prisma2

我需要一些帮助来理解如何设置我的数据模型。

我想做的是:

  • 在用户模型中引用组 ID。一个用户只能在一个组中,这就是我在下面所做的。
  • 在组模型中引用组内的所有用户。这就是我需要帮助的地方。
model User {
  id         String   @id @default(uuid())
  email      String   @unique
  role       Role     @default(USER)
  group      Group?   @relation(fields: [group_id], references: [id], onDelete: SetNull) 
  group_id   String   
  created_at DateTime @default(now())
  updated_at DateTime @updatedAt

  @@map("user")
}

model Group {
  id         String   @id @default(uuid())
  name       String
  users      User[]
  created_at DateTime @default(now())
  updated_at DateTime @updatedAt
  deleted    Boolean  @default(false)

  @@map("group")
}

当我已经有用户 User[] 用于 User 模型中的关系时,如何制作此 User 列表?

(顺便说一句,我已经阅读了文档,但我完全迷失了......)

1 个答案:

答案 0 :(得分:0)

我认为你的代码是正确的,你可以使用prisma-client来测试

这是这种关系的一个例子

model Agents {
  id             Int       @id @default(autoincrement()) @db.UnsignedInt
  name           String?   @db.VarChar(255)
  owner          String?   @db.VarChar(255)
  address        String?   @db.Text
  lat            String?   @db.VarChar(10)
  lng            String?   @db.VarChar(10)
  tel            String?   @db.VarChar(13)
  mobile         String?   @db.VarChar(11)
  workTime       String?   @db.VarChar(255)
  province       Provinces @relation(fields: [provinceId], references: [id])
  provinceId     Int       @db.UnsignedInt
  createDateTime DateTime  @default(now()) @db.Timestamp(0)
  updateDateTime DateTime? @db.Timestamp(0)
  @@index([provinceId], name: "provinceId")
  @@map(name: "agents")
}


model Provinces {
  id             Int       @id @default(autoincrement()) @db.UnsignedInt
  name           String?   @db.VarChar(255)
  coords         String?   @db.Text
  createDateTime DateTime  @default(now()) @db.Timestamp(0)
  updateDateTime DateTime? @db.Timestamp(0)
  agents Agents[]
  @@map(name: "provinces")
}