Skip to content

Enum does not work as a response parameter #227

@bombadile

Description

@bombadile

Enum class:

namespace App\Enum;

use MyCLabs\Enum\Enum;

class TaskStatus extends Enum
{
    public const STATUS_TO_DO = 1;
    public const STATUS_DOING = 2;
    public const STATUS_DONE = 3;
}

Entity:

/**
 * @Type()
 */
class Task
{   
    private int $status;

    /**
     * @Field()
     * @return TaskStatus
     */
    public function getStatusEnum(): TaskStatus
    {
        return new TaskStatus($this->status);
    }
}

GraphQL request:

query {
    getTask{status}
}

Result:

{
  "errors": [
    {
      "type": "GraphQL\\Error\\InvariantViolation",
      "message": "Expected a value of type \"MyCLabsEnum___App__Enum__TaskStatus\" but received: 2",
      "file": "/app/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
      "line": 976,
      "trace": [
        {
          "file": "/app/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 976,
          "function": null,
          "class": "GraphQL\\Error\\InvariantViolation",
          "args": [
            "Expected a value of type \"MyCLabsEnum___App__Enum__TaskStatus\" but received: 2"
          ]
        },
        {
          "file": "[internal]",
          "line": 0,
          "function": "GraphQL\\Executor\\{closure}",
          "class": "GraphQL\\Executor\\ReferenceExecutor",
          "args": [
            [],
            "changeStatusTask"
          ]
        },
        {
          "file": "/app/vendor/webonyx/graphql-php/src/Type/Definition/EnumType.php",
          "line": 138,
          "function": null,
          "class": "GraphQL\\Error\\Error",
          "args": [
            "Cannot serialize value as enum: 2"
          ]
        },
        {
          "file": "/app/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 974,
          "function": "serialize",
          "class": "GraphQL\\Type\\Definition\\EnumType",
          "args": [
            2
          ]
        },
        {
          "file": "/app/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 846,
          "function": "completeLeafValue",
          "class": "GraphQL\\Executor\\ReferenceExecutor",
          "args": [
            "MyCLabsEnum___App__Enum__TaskStatus",
            2
          ]
        },

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions