棱镜图式中的一对多自我关系



我想创建一个简单的表:

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 } })

最新更新