如何用Prisma筛选存在关联条目的publish_categories分类?
解决方案
要筛选出存在关联publish_items的分类,你可以利用Prisma的exists子查询,结合数组的has操作符实现“分类ID存在于任意条目groups数组中”的判断。
修正后的查询代码
const categories = await prisma.publish_categories.findMany({ select: { c_id: true, // 注意模型中主键是c_id,不是id name: true, slug: true }, where: { // 检查是否存在至少一个publish_items的groups数组包含当前分类的c_id exists: { publish_items: { some: { groups: { has: Prisma.sql`${prisma.publish_categories.fields.c_id}` } } } } }, orderBy: { name: "asc" }, });
关键说明
exists子查询:用于判断是否存在满足条件的关联数据,确保只返回有对应条目的分类。some:表示只要有一个publish_items条目满足条件即可。groups: { has: ... }:针对Int数组类型的字段,用has操作符判断数组中是否包含指定的分类ID(即当前分类的c_id)。- 注意模型主键:你的
publish_categories表主键是c_id,所以select和查询条件里要对应使用c_id,避免字段不存在的错误。
内容的提问来源于stack exchange,提问作者Radium Chris
相关产品推荐
相关产品推荐

