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

使用Laravel和GraphQL更新Shopify应用单个产品遇异常

问题分析与解决

你的更新产品mutation出现异常的原因主要有两个关键问题,结合Shopify GraphQL的规则来修正:

1. 冗余的必填变量导致请求异常

你的UPDATE_PRODUCTS_MUTATION声明了$productId: ID!变量,但实际调用时既没有传递这个变量,也没有在mutation中使用它。这会触发GraphQL的必填变量校验错误,可能导致请求被错误处理,甚至意外触发创建逻辑。

2. 缺少错误排查字段

当前mutation没有返回userErrors字段,无法获取Shopify返回的具体错误信息,难以定位问题。


修正后的代码

正确的Update Mutation定义

private const UPDATE_PRODUCTS_MUTATION = <<<'QUERY'
mutation productUpdate($input: ProductInput!) {
    productUpdate(input: $input) {
        product {
            id
            title # 返回title确认更新结果
        }
        userErrors { # 必须添加这个字段排查错误
            field
            message
        }
    }
}
QUERY;

正确的调用代码

$response = $graph->query(
    [
        "query" => self::UPDATE_PRODUCTS_MUTATION,
        "variables" => [
            "input" => [
                "id" => "gid://shopify/Product/123456789", // 注意:必须是Shopify全局ID格式
                "title" => 'Updated product title',
                "descriptionHtml" => "Updated product description",
            ]
        ]
    ]
);

关键注意事项

  • ID格式必须正确:Shopify GraphQL要求产品ID为全局ID(如gid://shopify/Product/123456789),不能只传数字ID。你可以从创建产品返回的id字段直接获取这个格式的ID。
  • 检查返回的userErrors:执行请求后,打印$response查看userErrors字段,里面会明确提示错误原因(比如ID无效、权限不足等)。
  • 确认mutation调用正确:确保你没有误将UPDATE_PRODUCTS_MUTATION写成CREATE_PRODUCTS_MUTATION。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:08:10