Skip to content

About

PHP Nested Set with Doctrine DBAL storage.

Topics

Resources

Stars

15 stars

Watchers

10 watching

Forks

Latest commit

 

History

64 Commits

Folders and files

Repository files navigation

Nested Set

A PHP Doctrine DBAL implementation for Nested Sets.

Using

Create table schema

Create the table schema, passing in a a DBAL connection and table name (defaults to 'tree').

$schema = new DbalNestedSetSchema($connection, 'my_tree');
schema->create();

Set up the nested set client

Create a new DbalNestedSet passing in the DBAL connection and the table name.

$nestedSet = new DbalNestedSet($connection, 'my_tree');

Add a root node

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);

Add a child node

To add a child node, you provide the parent node, and a child node key.

$nodeKey = new NodeKey($id, $revisionId);
$nestedSet->addNodeBelow($rootNode, $nodeKey);

Find Descendants

To find descendents, you provide the parent node key.

$nodeKey = new NodeKey($id, $revisionId);
$descendants = $this->nestedSet->findDescendants($nodeKey);

Find ancestors

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.

Developing

Dependencies

To install all dependencies, run:

composer install

Linting

Uses the Drupal coding standard.

To validate code sniffs run:

./bin/phpcs

To automatically fix code sniff issues, run:

./bin/phpcbf

Testing

To run all phpunit tests, run:

./bin/phpunit

About

PHP Nested Set with Doctrine DBAL storage.

Topics

Resources

Stars

15 stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages