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

如何在Orchard的GraphQL中关联两个内容项并按城市筛选办公室

Orchard GraphQL 按关联城市筛选办公室解决方案

前置配置检查

首先确认Office内容类型的关联字段配置,这是筛选条件不显示的核心原因:

  • 确认Office类型下有绑定到City类型的内容选择器字段(ContentPicker Field),假设字段后台命名为RelatedCity
  • 进入Orchard后台→「Content Definition」→找到Office类型的对应关联字段,勾选Enable filtering in GraphQL queries选项,保存后重启站点,该字段就会出现在GraphQL的where筛选列表中

实现方案

方案1:直接筛选关联城市(推荐,性能最优)

配置完上述开关后,可直接通过Office的查询接口按城市筛选,示例代码如下:

query {
  office(where: {
    relatedCity: {
      contentItem: {
        displayText: { equal: "纽约市" }
      }
    }
  }) {
    items {
      displayText
      address
      relatedCity {
        contentItem {
          displayText
        }
      }
    }
  }
}

如果已经拿到纽约市的ContentItemId,用ID筛选精度更高、性能更好:

query {
  office(where: {
    relatedCity: {
      contentItemId: { equal: "xxxxxx" } # 替换为纽约市的实际ContentItemId
    }
  }) {
    items {
      displayText
      address
    }
  }
}

方案2:嵌套查询(无需修改字段配置)

如果不想调整字段配置,也可以先查询纽约市,再嵌套拉取关联的所有办公室:

query {
  city(where: {
    displayText: { equal: "纽约市" }
  }) {
    items {
      displayText
      relatedOffices { # 该字段为City类型下关联Office的反向引用字段,需提前配置
        items {
          displayText
          address
        }
      }
    }
  }
}

常见问题排查

  • 所有查询的字段名需要和后台配置的实际字段名一致,Orchard GraphQL会自动把大驼峰的后台字段名转为小驼峰用于查询
  • 配置完筛选开关后如果看不到对应字段,清空GraphQL Schema缓存、重启站点即可生效

内容的提问来源于stack exchange,提问作者Parinaz.N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:15:02