我想创建一个简单的表:
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文档,但由于它说明了
此关系表示以下内容:
- "用户具有零个或一个教师">
- "用户可以有零个或更多的学生">
我怀疑这是我想要的。如何获得";用户可以有零个或更多的学生";没有";用户具有零个或一个教师";部分
这里需要一个User
有一个或多个朋友的关系。这将导致多对多的自我关系,因为User
可以有许多朋友,并且User
也可以是其他Users
的朋友。
这可以按如下方式进行:
model User {
id String @id @default(uuid())
name String
friends User[] @relation("friends")
friendsRelation User[] @relation("friends")
}
CCD_ 7是一个额外的字段,可以忽略,因为它只用于存储多对多关系。
与朋友创建一个User
看起来像这样:
await prisma.user.create({
data: {
name: 'user 1',
friends: { create: [{ name: 'user 2' }, { name: 'user 3' }] },
},
})
查询所有用户和他们的朋友将是:
await prisma.user.findMany({ include: { friends: true } })