用途
Prisma Client 关联(Relations)功能用于在 Prisma Client API 中查询和修改相互关联的数据记录。当需要在一次操作中加载、创建、更新、断开或删除关联记录时,可参考本资料。
主要能力
加载关联记录(Include)
通过 include 一次性加载关联记录,例如同时加载用户的 posts 和 profile。
支持的进阶形式:
- 过滤式 include:在 include 内使用 where、orderBy、take 和 select 对加载的关联记录进行过滤、排序、分页与字段选择。
- 嵌套 include:对关联记录继续 include 更深层的关联,例如加载 posts 下 comments 及其 author。
选择关联字段(Select)
通过 select 在查询指定字段的同时选择关联记录,例如选择 name 以及 posts 的 title。
嵌套写入(Nested Writes)
- 创建时同时创建关联记录:在 create 的 data 中通过 posts.create 和 profile.create 一次性创建。
- createOrConnect:查询已存在则连接,不存在则创建。
- connect:连接已存在的关联记录。
- 外键简写:可直接传入 authorId 等外键字段,而无需使用 connect。
更新关联记录
- update:更新指定的单条关联记录。
- updateMany:按条件批量更新关联记录。
- upsert:关联记录存在则更新,不存在则创建。
断开与删除关联
- disconnect:断开关联(一对一可选关系可传 true,多对多可传入对象数组指定记录)。
- delete:删除指定关联记录。
- deleteMany:按条件批量删除关联记录。
- set:以给定集合替换全部关联记录。
关联过滤器(Relation Filters)
- some:至少有一条关联记录匹配。
- every:全部关联记录匹配。
- none:没有任何关联记录匹配。
- is / isNot:用于一对一关系的匹配判断。
关联计数(Count Relations)
通过 select 中的 _count 统计关联记录数量,例如统计用户的 posts 与 followers 数量。
支持带条件过滤的计数:在 _count.select 内的关联字段上添加 where 条件,例如只统计已发布的 posts 数量。
使用方式
资料中给出的代码示例均基于 Prisma Client 的 JavaScript/TypeScript 调用风格,如 prisma.user.findUnique、prisma.user.create、prisma.user.update、prisma.user.findMany 等,通过 inclide、select、data 和 where 参数控制关联数据的加载与写入。文中未提供安装命令、URL 之外的接入步骤或环境配置说明。
适用场景
适用于需要在 Prisma 中进行以下操作的开发场景:关系型数据的关联读取(含过滤、排序、分页、嵌套加载)、关联数据的一次性嵌套创建、关联记录的更新与批量更新、关联的断开、删除与整体替换,以及基于关联条件的查询过滤与关联数量统计。
限制
资料仅提供功能参考与代码示例,未提供版本要求、性能说明、平台限制或收费信息;文中涉及的具体字段名(如 published、email、country 等)属于示例,实际使用需按自身数据模型调整。