Version: Edit on GitHub

Add a Custom Query Operator

For adding a new query operator two steps are necessary:

  • add a type definition
  • add the operator implementation

Type definition

Add a section similar to this one to your services.yml file.

    pimcore.datahub.graphql.querytypegenerator_operator_mycustomoperator:
        class: Pimcore\Bundle\DataHubBundle\GraphQL\QueryOperatorConfigGenerator\MyCustomOperator
        tags:
            - { name: pimcore.datahub.graphql.dataobjectquerytypegenerator, id: typegenerator_queryoperator_mycustomoperator }                        

For reference, have a look at a look at the Trimmer operator.

Operator Implementation

You have to provide both JavaScript code dealing with the UI configuration aspects specific to your operator and the server-side PHP implementation doing the actual calculations.

A JS sample can be found here. Note that the namespace would be pimcore.plugin.datahub.operator.mycustomoperator.

Make sure, that your extension gets loaded. See Pimcore Bundles docs page for further details.

Next thing is to provide the server-side implementation. A sample can be found here.

Finally, we have to define how the operator instances get created. In most cases we use the DefaultOperatorFactory for that:

    pimcore.datahub.graphql.dataobjectqueryoperator.factory.mycustomoperator:
        class: Pimcore\Bundle\DataHubBundle\GraphQL\Query\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\Bundle\DataHubBundle\GraphQL\Query\Operator\MyCustomOperator
        tags:
            - { name: pimcore.datahub.graphql.dataobjectqueryoperator_factory, id: mycustomoperator }