Query in GRAPHQL

A GraphQL query retrieves data from the application server in a similar manner as a REST GET call. The current set of Adobe Commerce and Magento Open Source GraphQL queries allow a mobile app or browser to render a wide variety of information, including the following:

  • A set of products to be displayed. This can include the entire catalog or those that match customer-specified criteria.
  • Customer data. With a customer token, a query can retrieve basic information about a customer as well as billing and shipping addresses, wish lists, order history, and other sensitive data.
  • Shopping cart contents. GraphQL supports both guest and logged-in customer carts.
  • Store configuration values, including theme and CMS settings, the currency code, and supported countries.

GraphQL QUERY Implementation in Magento 2.4

Magento’s 2.4 version is already fitted with GraphQL support. we’ll go over the process of implementing GraphQL in Magento step by step. We’ll provide an example of GraphQL query.

Step 1 :- You Create registration.php file

 * @author KPYXAL
 * @copyright Copyright (c) 2021
 * @package Kpyxal_GraphqlQuery


Step 2 :- create etc/module.xml file

<?xml version="1.0"?>
 * @author KPYXAL
 * @copyright Copyright (c) 2021
 * @package Kpyxal_GraphqlQuery

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    <module name="Kpyxal_GraphqlQuery" >
            <module name="Magento_Customer"/>
            <module name="Magento_Authorization"/>
            <module name="Magento_GraphQl"/>

Step 3 :- GraphQL queries are declared under etc/schema.graphqls

type Query {
    formdata: [Formdata] @resolver(class:"Kpyxal\\GraphqlQuery\\Model\\Resolver\\ProductsResolver") @doc(description:"The formdata query returns information about a customer")
type Formdata @doc(description: "Formdata defines the customer name and other details") {
    name: String @doc(description: "Get Name")
    number: String @doc(description: "Get Number")
    email: String @doc(description: "Get Email")
    password: String @doc(description: "Get Password")
    gender: Int @doc(description: "Get Gender")
    bdate: String @doc(description: "Get Birth Date")

In above file

type Query : declares Query operations of our module.
formdata : name of our query.  
type Formdata : defines the identity of the query , including resolver (@resolver) class,document (@doc) .
formdata: [Formdata]  :  if we need array of data than need to put identity in array like:-
name of query = [ Identity name ]
And here identity name is Formdata same name which we are use in : type Formdata 

Step 4 :- Create Resolver Class Model/Resolver/ProductsResolver.php


namespace Kpyxal\GraphqlQuery\Model\Resolver;

use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\GraphQl\Config\Element\Field;
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
use Magento\Framework\GraphQl\Query\ResolverInterface;
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
use Kpyxal\GraphqlQuery\Model\ResourceModel\Test\Collection;

 * Product collection resolver
class ProductsResolver implements ResolverInterface
    public function __construct(
        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
        Collection $collection
    ) {
        $this->searchCriteriaBuilder = $searchCriteriaBuilder;
        $this->collection = $collection;

     * @inheritdoc
    public function resolve(
        Field $field,
        ResolveInfo $info,
        array $value = null,
        array $args = null
    ) {
        $alldata = $this->getAllData();
        $arraydata= [];
        if (count($alldata) > 0):
            foreach ($alldata as $data):
                 $arraydata[] = array(
        return $arraydata;

     * @return Collection
    public function getAllData()
        return $this->collection;

In above resolver file we have used
collection to get data and passed it to some variables like name,number,email.

Step 5 :- Final step you check output. Run this query


Happy Coding ..! 😉