Version 4 supported
This version of Silverstripe CMS is still supported though will not receive any additional features. Go to documentation for the most recent stable version.

Working with DataObject models

Adding DataObject models to the schema
An overview of how the DataObject model can influence the creation of types, queries, and mutations
DataObject operation permissions
A look at how permissions work for DataObject queries and mutations
DataObject inheritance
Learn how inheritance is handled in DataObject model types
DataObject query plugins
Learn about some of the useful goodies that come pre-packaged with DataObject queries
Property mapping and dot syntax
Learn how to customise field names, use dot syntax, and use aggregate functions
Nested type definitions
Define dependent types inline with a parent type
Versioned content
A guide on how DataObject models with the Versioned extension behave in GraphQL schemas

You are viewing docs for silverstripe/graphql 4.x. If you are using 3.x, documentation can be found in the GitHub repository

Nested type definitions

For readability and ergonomics, you can take advantage of nested type definitions. Let's imagine we have a Blog and we want to expose Author and Categories, but while we're at it, we want to specify what fields they should have.

# app/_graphql/models.yml
App\PageType\Blog:
  fields:
    title: true
    author:
      fields:
        firstName: true
        surname: true
        email: true
    categories:
      fields: '*'

Alternatively, we could flatten that out:

# app/_graphql/models.yml
App\PageType\Blog:
  fields:
    title: true
    author: true
    categories: true
SilverStripe\Security\Member:
  fields:
    firstName: true
    surname: true
    email: true
App\Model\BlogCategory:
  fields: '*'

You cannot define operations on nested types. They only accept fields.

Further reading

Adding DataObject models to the schema
An overview of how the DataObject model can influence the creation of types, queries, and mutations
DataObject operation permissions
A look at how permissions work for DataObject queries and mutations
DataObject inheritance
Learn how inheritance is handled in DataObject model types
DataObject query plugins
Learn about some of the useful goodies that come pre-packaged with DataObject queries
Property mapping and dot syntax
Learn how to customise field names, use dot syntax, and use aggregate functions
Nested type definitions
Define dependent types inline with a parent type
Versioned content
A guide on how DataObject models with the Versioned extension behave in GraphQL schemas