我想创建一个简单的表:
Users
---
id
name
friends
Run Code Online (Sandbox Code Playgroud)
friends字段应该是其他用户 ID 的数组。我正在尝试为此定义一个架构schema.prisma:
model User {
id String @id @default(uuid())
name String
friends User[]
}
Run Code Online (Sandbox Code Playgroud)
保存文件会自动完成模式:
model User {
id String @id @default(uuid())
name String
friends User[] @relation("UserToUser")
User User? @relation("UserToUser", fields: [userId], references: [id])
userId String?
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何解释这一点。我已经阅读了关于一对多自我关系的Prisma 文档,但是因为它指出
该关系表示如下:
- “一个用户有零个或一个老师”
- “一个用户可以有零个或多个学生”
我怀疑这是我想要的。如何在没有“用户有零个或一个教师”部分的情况下获得“一个用户可以有零个或多个学生”?
在这里你需要一个User有一个或多个朋友的关系。这将导致多对多的自我关系,因为 aUser可以有很多朋友,也User可以是 other 的朋友Users。
这可以按如下方式完成:
model User {
id String @id @default(uuid())
name String
friends User[] @relation("friends")
friendsRelation User[] @relation("friends")
}
Run Code Online (Sandbox Code Playgroud)
thefriendsRelation是一个额外的字段,可以忽略,因为它仅用于存储多对多关系。
User与朋友一起创建一个看起来像这样:
await prisma.user.create({
data: {
name: 'user 1',
friends: { create: [{ name: 'user 2' }, { name: 'user 3' }] },
},
})
Run Code Online (Sandbox Code Playgroud)
查询所有用户和他们的朋友将是:
await prisma.user.findMany({ include: { friends: true } })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |