Prisma - 如何将两个字段指向同一模型?

Prisma - How to point two fields to same model?

我无法构思如何处理此问题。我仔细阅读了 Prisma 文档和其他 SO 问题,但它们似乎都与这种情况略有不同。

我有两个模型:

model User {
  id                Int               @id @default(autoincrement())
  firstName         String?           @map("first_name")
  lastName          String?           @map("last_name")
  email             String            @unique
  password          String
  role              UserRole          @default(value: USER)
  image             String?           @map("image")
  createdAt         DateTime          @default(now()) @map("created_at")
  updatedAt         DateTime          @updatedAt @map("updated_at")

  friends       Friend[]

  @@map("users")
}

model Friend {
  id               Int      @id @default(autoincrement())
  inviteSentOn     DateTime @map("invite_sent_on") @db.Timestamptz(1)
  inviteAcceptedOn DateTime @map("invite_accepted_on") @db.Timestamptz(1)
  userId           Int      @map("user_id")
  friendId         Int      @map("friend_id")
  createdAt        DateTime @default(now()) @map("created_at")
  updatedAt        DateTime @updatedAt @map("updated_at")

  user User @relation(fields: [userId], references: [id])
  // friend User? @relation(name: "FriendFriend", fields: [friendId], references: [id])

  @@map("friends")
}

我希望能够在 Friend 模型上建立关系,使其都指向 User 模型,但是我收到诸如 Error validating field 'friend' in model 'Friend': The relation field 'friend' on Model 'Friend' is missing an opposite relation field on the model 'User'.

之类的错误

我已尝试将名称 属性 添加到 @relation 字段,但开始收到有关检测到不明确关系的错误消息。

我该如何正确设置这些关系?

您只需要提供 name 来消除歧义关系,例如:

model User {
  id Int @id @default(autoincrement())
  friend Friend? 
  friends Friend[] @relation(name: "friends")
}

model Friend {
  id       Int @id @default(autoincrement())
  userId   Int
  friendId Int
  user User @relation(fields: [userId], references: [id])
  friend User @relation(fields: [friendId], references: [id], name: "friends")
}

并且不要忘记关系的双方都需要与对方有联系。