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")
}
并且不要忘记关系的双方都需要与对方有联系。
我无法构思如何处理此问题。我仔细阅读了 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")
}
并且不要忘记关系的双方都需要与对方有联系。