A PHP Doctrine DBAL implementation for Nested Sets.
Create the table schema, passing in a a DBAL connection and table name (defaults to 'tree').
$schema = new DbalNestedSetSchema($connection, 'my_tree');
schema->create();
Create a new DbalNestedSet
passing in the DBAL connection and the table name.
$nestedSet = new DbalNestedSet($connection, 'my_tree');
A NodeKey represents a unique ID for a node in the tree. It supports the idea of a node ID and a revision ID, mostly for compatibility with Drupal.
$nodeKey = new NodeKey($id, $revisionId);
$rootNode = $nestedSet->addRootNode($nodeKey);
To add a child node, you provide the parent node, and a child node key.
$nodeKey = new NodeKey($id, $revisionId);
$nestedSet->addNodeBelow($rootNode, $nodeKey);
To find descendents, you provide the parent node key.
$nodeKey = new NodeKey($id, $revisionId);
$descendants = $this->nestedSet->findDescendants($nodeKey);
To find ancestors, you provide the child node key.
$nodeKey = new NodeKey($id, $revisionId);
$ancestors = $this->nestedSet->findAncestors($nodeKey);
See \PNX\NestedSet\NestedSetInterface
for many more methods that can be used for interacting with the nested set.
To install all dependencies, run:
make init
Uses the Drupal coding standard.
To validate code sniffs run:
make lint-php
To automatically fix code sniff issues, run:
make fix-php
To run all phpunit tests, run:
make test