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

Laravel9/Lighthouse6中能否在GraphQL Playground使用枚举值执行更新突变?

Laravel 9 + Lighthouse 6 枚举类型在GraphQL突变中的正确用法

能不能用VoteStatus::ACTIVE格式?

不能。VoteStatus::ACTIVE是PHP代码中调用枚举的语法,而GraphQL Playground遵循GraphQL自身的语法规范,完全不识别PHP的枚举调用方式,直接输入必然触发语法错误。

使用字符串"ACTIVE"仍报错的原因及解决办法

你遇到这个问题,大概率是以下环节出了问题:

  • 枚举定义不匹配
    确保PHP枚举的case值和GraphQL schema里的枚举值完全对应。比如PHP枚举定义:
    enum VoteStatus: string {
        case ACTIVE = 'ACTIVE';
        case INACTIVE = 'INACTIVE';
    }
    
    对应的GraphQL schema要通过@enum指令关联:
    enum VoteStatus @enum(class: "App\\Enums\\VoteStatus")
    
  • 突变参数类型错误
    检查updateVote突变的status参数类型是不是VoteStatus枚举,而非String。正确的突变定义示例:
    type Mutation {
        updateVote(id: ID!, status: VoteStatus!): Vote
    }
    
  • 调用时的语法错误
    GraphQL枚举是独立类型,调用时不需要给值加引号。如果加了引号,值会被识别为字符串,和VoteStatus类型不匹配,自然报错。正确的调用写法:
    mutation {
        updateVote(id: "1", status: ACTIVE) {
            id
            status
        }
    }
    

总结

在GraphQL Playground中必须遵循GraphQL语法,直接使用枚举的原始值(无引号),不能用PHP的枚举调用格式。如果用字符串报错,先排查枚举定义、参数类型和调用语法这三个关键点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:02:48