Generates data model visualisations from SilverSripe DataObjects, displaying database fields, relations and ancestry

0.0.3 2015-11-11 01:43 UTC


Creates data model visualisations of SilverStripe DataObjects, showing fields, relations and ancestry. Can output images in .png, .svg and raw GraphViz "dot" format. Flexible configuration options and can be called from command line and URL.

SilverGraph example

Example call:,framework,mysite


  • Composer/Packagist: Install composer, run composer require froog/silvergraph (* for version) and visit ?flush=1 to update the routing table.
  • Manual: Download and extract silvergraph as SilverGraph folder in the top level of your site and visit ?flush=1 to update the routing table.

Installation on OSX

  • Install Graphviz via Homebrew: brew install graphviz and note down the location
  • Add the location to your _ss_environment.php file, postpending 'dot' to the end of the path, e.g.: define('SILVERGRAPH_GRAPHVIZ_PATH', '/usr/local/Cellar/graphviz/2.38.0/bin/dot');
  • Visit ?flush=1 to update the routing table.


  • SilverStripe 3.0.0+
  • To create images: GraphViz (latest version)
    • To install (Debian/Ubuntu): apt-get install graphviz


Command line: (in site root)

  • Default png image: sake Silvergraph/png > datamodel.png
  • Parameters: sake Silvergraph/png location=mysite,cms inherited=1 exclude=SiteTree > datamodel.png
  • Default dot file: sake Silvergraph/dot >

Browser: (logged in as admin)


Specify the folder to look for classes under

  • location=mysite (default) Only graph classes under the /mysite folder
  • location=/ Graph ALL classes in every module (warning - may take a long time and could generate a large .png)
  • location=mysite,mymodule Only graph classes under /mysite and /mymodule folders

Remove specific classes from the graph

  • exclude=SiteTree
  • exclude=SiteTree,File

How verbosely to show relations

  • relations=0 Don't show any relations
  • relations=1 (default) Don't show inherited relations
  • relations=2 Show inherited relations (verbose)

How verbosely to show fields

  • fields=0 Don't show any fields
  • fields=1 (default) Show only fields defined on self
  • fields=2 Show inherited fields (verbose)

How verbosely to show ancestors

  • ancestry=0 Don't show any ancestry relations
  • ancestry=1 (default) Show ancestry relations

Include DataObject on the graph

  • include-root=0 (default) Don't graph DataObject
  • include-root=1 Graph DataObject

Group classes by modules

  • group=0 (default) Don't group by modules
  • group=1 Group the modules into their own container

Specify direction graph is laid out

  • rankdir=x Where x is TB (default) ,LR,RL, or BT (top-bottom, left-right, right-left, bottom-top)


  • Better default styling/colours of the graph
  • Less verbose option for relations, eg; combining has_one, has_many paths on the same path
  • Better error handling from dot -> png, if error in dot format