如何用单条Prisma查询更新多对多关联模型?
用单条Prisma查询实现双向关联的参与者添加
给定如下Prisma模型:
model User { user_id String @id @default(uuid()) groups Group[] @relation("CreatedGroups") participating_groups Group[] @relation("Participants") // 记录用户参与的群组 } model Group { group_id String @id @default(uuid()) participants User[] @relation("Participants") // 记录群组的参与者 creator_id String creator User @relation("CreatedGroups", fields: [creator_id], references: [user_id]) }
需求是向群组添加一名参与者,同时更新Group的participants数组和User的participating_groups数组,无需分别执行两次更新查询。
解决方案
利用Prisma对双向关联的自动维护能力,只需要单条update操作即可完成双向关联的同步:
方式1:通过更新群组添加参与者
await prisma.group.update({ where: { group_id: "目标群组ID" }, data: { participants: { connect: { user_id: "要添加的用户ID" } } } });
方式2:通过更新用户添加参与的群组
await prisma.user.update({ where: { user_id: "目标用户ID" }, data: { participating_groups: { connect: { group_id: "要加入的群组ID" } } } });
说明
因为你已经为Participants关联设置了双向映射,Prisma会自动处理关联的双向同步——无论你选择更新Group还是User模型,对应的另一方关联字段都会被自动更新,不需要额外执行第二次查询。
内容的提问来源于stack exchange,提问作者Artemixx
相关产品推荐
相关产品推荐

