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

如何在Prisma中对深度嵌套表执行findMany筛选查询?

在Prisma中筛选关联特定分类标题的Offer

根据你提供的数据库Schema,Offer和Category通过OfferCategory中间表构成多对多关系。要筛选出关联标题为「Fruits」的分类的Offer,可以通过嵌套的where条件实现,具体代码如下:

基础筛选示例

const offersInFruits = await prisma.offer.findMany({
  where: {
    categories: {
      // 只要Offer关联的分类中有任意一个匹配条件就会被选中
      some: {
        category: {
          title: "Fruits"
        }
      }
    }
  },
  // 可选:如果需要返回关联的分类详情,添加include
  include: {
    categories: {
      include: {
        category: true
      }
    }
  }
});

处理分类标题为Null的情况

由于Schema中Category.title是可选字段(String?),如果需要避免匹配到标题为null的分类,可以添加非空校验:

const offersInFruits = await prisma.offer.findMany({
  where: {
    categories: {
      some: {
        category: {
          title: {
            equals: "Fruits",
            not: null
          }
        }
      }
    }
  }
});

筛选多个分类标题

如果需要同时匹配多个分类标题(比如「Fruits」和「Vegetables」),可以使用in操作符:

const offersInTargetCategories = await prisma.offer.findMany({
  where: {
    categories: {
      some: {
        category: {
          title: {
            in: ["Fruits", "Vegetables"],
            not: null
          }
        }
      }
    }
  }
});

关键说明

  • some关键字表示:只要当前Offer关联的OfferCategory记录中,存在任意一条对应的Category满足标题条件,该Offer就会被纳入结果集。
  • 如果需要严格匹配所有关联分类都符合条件,可以将some替换为every(根据业务需求调整)。

内容的提问来源于stack exchange,提问作者Ray Cobain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:42:39