prisma 模式中的一对多自关系
Posted
技术标签:
【中文标题】prisma 模式中的一对多自关系【英文标题】:One-to-many self-relation in prisma schema 【发布时间】:2021-03-17 15:12:39 【问题描述】:我想创建一个简单的表:
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,但是因为它声明了
这种关系表达如下:
“一个用户有零个或一个老师” “一个用户可以有零个或多个学生”
我怀疑这是我想要的。如果没有“一个用户有零个或一个老师”部分,如何获得“一个用户可以有零个或多个学生”?
【问题讨论】:
【参考方案1】:这里你需要一个User
有一个或多个朋友的关系。这将导致多对多的自我关系,因为User
可以有很多朋友,而且User
可以是其他Users
的朋友。
这可以按如下方式完成:
model User
id String @id @default(uuid())
name String
friends User[] @relation("friends")
friendsRelation User[] @relation("friends")
friendsRelation
是一个额外的字段,可以忽略,因为它只用于存储多对多关系。
与朋友创建User
如下所示:
await prisma.user.create(
data:
name: 'user 1',
friends: create: [ name: 'user 2' , name: 'user 3' ] ,
,
)
查询所有用户及其朋友将是:
await prisma.user.findMany( include: friends: true )
【讨论】:
谢谢!了解我需要多对多关系而不是一对多关系使其“点击”以上是关于prisma 模式中的一对多自关系的主要内容,如果未能解决你的问题,请参考以下文章