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

WorkOrder对象查询AssignedResource字段的SOQL报错问题

问题根因

你原有SOQL报错来自两个核心语法错误:

  • 子查询引用的子关系名错误:WorkOrder和AssignedResource是一对多的父子关联,Salesforce标准子关系API名为复数形式AssignedResources,你写的单数AssignedResource不存在,会直接抛无效关系错误。
  • 子查询内字段引用错误:子查询的查询上下文是AssignedResource对象本身,不需要在字段前加AssignedResource.前缀,直接引用对象上的字段即可,额外加前缀会被识别为不存在的自定义字段,触发报错。
  • 额外说明:ServiceResourceId是AssignedResource对象上的标准查找外键字段,不需要追加__r后缀,__r后缀仅用于跨查找关系取关联对象的属性时使用。
可直接运行的正确SOQL
SELECT
    WorkOrderNumber,
    Subject,
    Description,
    Status,
    Job_Request_SDO__c,
    Job_Location__c,
    Job_Type__c,
    Job_Category__c,
    Job_Number_Text__c,
    CaseId,
    (SELECT ServiceResourceId FROM AssignedResources)
FROM WorkOrder

该语句会一次性返回所有要求的字段,同时嵌套返回每个工单关联的所有AssignedResource记录对应的ServiceResourceId,不需要额外写独立查询。

是否需要编写Wrapper类

Wrapper类不是必须项,根据使用场景选择即可:

  • 如果是Apex原生逻辑处理,直接使用查询返回的WorkOrder sObject列表即可,每个WorkOrder记录会自带AssignedResources子列表属性,遍历即可拿到对应的ServiceResourceId,参考代码:
List<WorkOrder> workOrders = [
    SELECT WorkOrderNumber, Subject, (SELECT ServiceResourceId FROM AssignedResources) FROM WorkOrder
];
for (WorkOrder wo : workOrders) {
    for (AssignedResource ar : wo.AssignedResources) {
        Id relatedServiceResourceId = ar.ServiceResourceId;
        // 编写你的业务逻辑
    }
}
  • 仅当你需要自定义返回数据结构(比如给前端返回接口、做跨系统数据传输、需要扁平化数据结构)时,才需要编写Wrapper类组装数据。

内容的提问来源于stack exchange,提问作者Sai Sudarshan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:39:27