You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:28:27