Skip to content
This repository was archived by the owner on Dec 19, 2019. It is now read-only.
This repository was archived by the owner on Dec 19, 2019. It is now read-only.

Using ... on ConfigurableProduct on category(id:) fails #85

Closed
@cjelger

Description

@cjelger

I have been trying to get all the products of a given category, including the sub-products of each product if it is a configurable product. This fails, here is an example of the request:

{
  category(id: 14) {
    id
    name
    products {
      items {
        sku
        ... on ConfigurableProduct {
          variants {
            product {
              sku
            }
          }
        }
      }
    }
  }
}

The problematic part is the ... on ConfigurableProduct block, if I remove it, the query works. With that block, the query fails with the following error message:

{
  "errors": [
    {
      "debugMessage": "Notice: Undefined property: GraphQL\\Language\\AST\\InlineFragmentNode::$name in /Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/AttributesJoiner.php on line 31",
      "message": "Internal server error",
      "category": "internal",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "category"
      ],
      "trace": [
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/AttributesJoiner.php",
          "line": 31,
          "call": "Magento\\Framework\\App\\ErrorHandler::handler(8, 'Undefined property: GraphQL\\Language\\AST\\InlineFragmentNode::$name', '/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/AttributesJoiner.php', 31, array(4))"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/CategoryTree.php",
          "line": 142,
          "call": "Magento\\CatalogGraphQl\\Model\\AttributesJoiner::join(instance of GraphQL\\Language\\AST\\FieldNode, instance of Magento\\Catalog\\Model\\ResourceModel\\Category\\Collection(24))"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/CategoryTree.php",
          "line": 146,
          "call": "Magento\\CatalogGraphQl\\Model\\Resolver\\Products\\DataProvider\\CategoryTree::joinAttributesRecursively(instance of Magento\\Catalog\\Model\\ResourceModel\\Category\\Collection(24), instance of GraphQL\\Language\\AST\\FieldNode)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/CategoryTree.php",
          "line": 146,
          "call": "Magento\\CatalogGraphQl\\Model\\Resolver\\Products\\DataProvider\\CategoryTree::joinAttributesRecursively(instance of Magento\\Catalog\\Model\\ResourceModel\\Category\\Collection(24), instance of GraphQL\\Language\\AST\\FieldNode)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/CategoryTree.php",
          "line": 94,
          "call": "Magento\\CatalogGraphQl\\Model\\Resolver\\Products\\DataProvider\\CategoryTree::joinAttributesRecursively(instance of Magento\\Catalog\\Model\\ResourceModel\\Category\\Collection(24), instance of GraphQL\\Language\\AST\\FieldNode)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php",
          "line": 76,
          "call": "Magento\\CatalogGraphQl\\Model\\Resolver\\Products\\DataProvider\\CategoryTree::getTree(instance of Magento\\Framework\\GraphQl\\Schema\\Type\\ResolveInfo, 14)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/vendor/webonyx/graphql-php/src/Deferred.php",
          "line": 54,
          "call": "Magento\\CatalogGraphQl\\Model\\Resolver\\CategoryTree::Magento\\CatalogGraphQl\\Model\\Resolver\\{closure}()"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/vendor/webonyx/graphql-php/src/Deferred.php",
          "line": 34,
          "call": "GraphQL\\Deferred::run()"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/vendor/webonyx/graphql-php/src/Executor/Promise/Adapter/SyncPromiseAdapter.php",
          "line": 139,
          "call": "GraphQL\\Deferred::runQueue()"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/vendor/webonyx/graphql-php/src/GraphQL.php",
          "line": 88,
          "call": "GraphQL\\Executor\\Promise\\Adapter\\SyncPromiseAdapter::wait(instance of GraphQL\\Executor\\Promise\\Promise)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/lib/internal/Magento/Framework/GraphQl/Query/QueryProcessor.php",
          "line": 63,
          "call": "GraphQL\\GraphQL::executeQuery(instance of Magento\\Framework\\GraphQl\\Schema, '{\n  category(id: 14) {\n    id\n    name\n    products {\n      items {\n        sku\n        ... on ConfigurableProduct {\n          variants {\n            product {\n              sku\n            }\n          }\n        }\n      }\n    }\n  }\n}\n', null, instance of Magento\\GraphQl\\Model\\Query\\Resolver\\Context, array(0), null)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/app/code/Magento/GraphQl/Controller/GraphQl.php",
          "line": 108,
          "call": "Magento\\Framework\\GraphQl\\Query\\QueryProcessor::process(instance of Magento\\Framework\\GraphQl\\Schema, '{\n  category(id: 14) {\n    id\n    name\n    products {\n      items {\n        sku\n        ... on ConfigurableProduct {\n          variants {\n            product {\n              sku\n            }\n          }\n        }\n      }\n    }\n  }\n}\n', instance of Magento\\GraphQl\\Model\\Query\\Resolver\\Context, array(0))"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/lib/internal/Magento/Framework/Interception/Interceptor.php",
          "line": 58,
          "call": "Magento\\GraphQl\\Controller\\GraphQl::dispatch(instance of Magento\\Framework\\App\\Request\\Http)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/lib/internal/Magento/Framework/Interception/Interceptor.php",
          "line": 138,
          "call": "Magento\\GraphQl\\Controller\\GraphQl\\Interceptor::___callParent('dispatch', array(1))"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/lib/internal/Magento/Framework/Interception/Interceptor.php",
          "line": 153,
          "call": "Magento\\GraphQl\\Controller\\GraphQl\\Interceptor::Magento\\Framework\\Interception\\{closure}(instance of Magento\\Framework\\App\\Request\\Http)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/generated/code/Magento/GraphQl/Controller/GraphQl/Interceptor.php",
          "line": 26,
          "call": "Magento\\GraphQl\\Controller\\GraphQl\\Interceptor::___callPlugins('dispatch', array(1), array(1))"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/lib/internal/Magento/Framework/App/Http.php",
          "line": 135,
          "call": "Magento\\GraphQl\\Controller\\GraphQl\\Interceptor::dispatch(instance of Magento\\Framework\\App\\Request\\Http)"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/generated/code/Magento/Framework/App/Http/Interceptor.php",
          "line": 24,
          "call": "Magento\\Framework\\App\\Http::launch()"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/lib/internal/Magento/Framework/App/Bootstrap.php",
          "line": 256,
          "call": "Magento\\Framework\\App\\Http\\Interceptor::launch()"
        },
        {
          "file": "/Users/jelger/dev/magento/magento2-vagrant-for-developers/magento2ce/index.php",
          "line": 39,
          "call": "Magento\\Framework\\App\\Bootstrap::run(instance of Magento\\Framework\\App\\Http\\Interceptor)"
        }
      ]
    }
  ],
  "data": {
    "category": null
  }
}

I was actually also trying to get all the products of children categories, it fails for similar reasons, here is the complete request I have been trying:

{
  category(id: 14) {
    id
    name
    products {
      items {
        sku
        ... on ConfigurableProduct {
          variants {
            product {
              sku
            }
          }
        }
      }
    }
    children {
      id
      name
      products {
        items {
          sku
          ... on ConfigurableProduct {
            variants {
              product {
                sku
              }
            }
          }
        }
      }
    }
  }
}

cc: @antonkril and @paliarush as discussed on Slack

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions