我无法概念化如何处理这个问题。我仔细研究了 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")
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在 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'.
我尝试将 name 属性添加到 @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")
}
Run Code Online (Sandbox Code Playgroud)
不要忘记,关系双方都需要与对方建立联系。
| 归档时间: |
|
| 查看次数: |
3299 次 |
| 最近记录: |