gpt4 book ai didi

database - Prisma 模式中的一对多自相关

转载 作者:行者123 更新时间:2023-12-04 16:38:45 26 4
gpt4 key购买 nike

我想创建一个简单的表:

Users
---
id
name
friends
friends字段应该是其他用户 ID 的数组。我试图在 schema.prisma 中为此定义一个模式:
model User {
id String @id @default(uuid())
name String
friends User[]
}
保存文件会自动完成模式:
model User {
id String @id @default(uuid())
name String
friends User[] @relation("UserToUser")
User User? @relation("UserToUser", fields: [userId], references: [id])
userId String?
}
我不知道如何解释这一点。我已阅读 Prisma docs about one-to-many self relations , 但既然它说

This relation expresses the following:

  • "a user has zero or one teachers"
  • "a user can have zero or more students"

我怀疑这是我想要的。如何在没有“用户有零个或一个教师”部分的情况下获得“一个用户可以有零个或多个学生”?

最佳答案

这里你需要一个关系,其中一个 User有一个或多个 friend 。这将导致多对多的自我关系为 User可以有很多 friend ,还有一个User可以做其他 friend Users .
这可以按如下方式完成:

model User {
id String @id @default(uuid())
name String
friends User[] @relation("friends")
friendsRelation User[] @relation("friends")
}
friendsRelation是一个额外的字段,可以忽略,因为它仅用于存储多对多关系。
创建 User与 friend 一起看起来像这样:
  await prisma.user.create({
data: {
name: 'user 1',
friends: { create: [{ name: 'user 2' }, { name: 'user 3' }] },
},
})
查询所有用户和他们的 friend 将是:
await prisma.user.findMany({ include: { friends: true } })

关于database - Prisma 模式中的一对多自相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65162657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com