与附加字段的一对多关系
Posted
技术标签:
【中文标题】与附加字段的一对多关系【英文标题】:One-to-many relation with additional field 【发布时间】:2021-10-14 09:19:17 【问题描述】:我正在使用模型 User 和 Guild 在 prisma 中创建模式。
用户可以有一个公会,也可以没有 公会可以有多个用户现在我想添加一个用户在公会中的角色的附加字段。
实现这一目标的最佳方法是什么?
我可以将它们添加给用户,但我必须在代码中管理它,所有这些都为空或不为空。
enum GuildRole
MEMBER
CO_LEADER
LEADER
model Guild
id Int @id @default(autoincrement())
name String
users User[]
model User
id Int @id @default(autoincrement())
username String? @unique
guild Guild? @relation(fields: [guildId], references: [id])
guildId Int?
guildRole GuildRole?
【问题讨论】:
【参考方案1】:将现有用户添加到公会时,您可以执行以下操作。
import PrismaClient, GuildRole from '@prisma/client'
const prisma = new PrismaClient()
// add user to guild
const addAnExistingUserToAGuild = async (userId: number, guildId: number, guildRole: GuildRole) =>
return await prisma.user?.create(
data:
guildId: guildId,
userId: userId,
guildRole: guildRole,
,
)
建模将完全取决于您的个人/公司偏好/风格,我已将您的架构建模如下:
enum GuildRole
MEMBER
CO_LEADER
LEADER
model User
userId Int @id @default(autoincrement())
username String? @unique
guild Guild? @relation(fields: [guildId], references: [guildId])
guildId Int?
guildRole GuildRole?
model Guild
guildId Int @id @default(autoincrement())
name String
users User[]
更多关于如何创建一对多关系的示例在我们的文档中:
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/one-to-many-relations
【讨论】:
以上是关于与附加字段的一对多关系的主要内容,如果未能解决你的问题,请参考以下文章
Django Postgres ArrayField 与一对多关系
如何与 Spring 和 thymeleaf 创建一对多的关系?