## Apache Zeta Components Manual :: Docs For Class ezcTreeDbParentChild

### TreeDatabaseTiein::ezcTreeDbParentChild

### Class ezcTreeDbParentChild

ezcTreeDbParentChild implements a tree backend which stores parent/child information in a simple table containing the node's ID and its parent's ID.

The table that stores the index (configured using the $indexTableName argument of the __construct method) should contain at least two fields. The first one 'id' will contain the node's ID, the second one 'parent_id' the ID of the node's parent. Both fields should be of the same database field type. Supported field types are either integer or a string type. In order to use auto-generated IDs, the 'id' field needs to be an auto-incrementing integer field, by using either an auto-increment field, or a sequence.

Source for this file: /TreeDatabaseTiein/src/backends/db_parent_child.php

    ezcTree
       |
       --ezcTreeDb
          |
          --ezcTreeDbParentChild

Version: | //autogentag//

### Descendants

Child Class | Description
--- | ---
ezcTreeDbNestedSet | ezcTreeDbNestedSet implements a tree backend which stores parent/child information with left and right values.

### Properties

string | read/write | `$nodeClassName` Which class is used as tree node - this class *must* inherit the ezcTreeNode class.
ezcTreeDbDataStore | read | `$store` The data store that is used for retrieving/storing data.

### Inherited Member Variables

From ezcTreeDb
protected | `ezcTreeDb::$dbh`
protected | `ezcTreeDb::$indexTableName`
From ezcTree
protected | `ezcTree::$inTransaction`
protected | `ezcTree::$inTransactionCommit`
protected | `ezcTree::$properties`

### Method Summary

public static void | `create( $dbh , $indexTableName , $store )` Creates a new ezcTreeDbParentChild object.
public void | `addChild( $parentId , $childNode )` Adds the node $childNode as child of the node with ID $parentId.
protected void | `addChildNodesBreadthFirst( $list , $nodeId )` Adds the children nodes of the node with ID $nodeId to the ezcTreeNodeList $list.
protected void | `countChildNodes( &$count , $nodeId , $count )` Adds the number of children with for the node with ID $nodeId nodes to $count, recursively.
protected ezcQueryInsert | `createAddEmptyNodeQuery( )` Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained.
public void | `delete( $nodeId )` Deletes the node with ID $nodeId from the tree, including all its children.
protected PDOStatement | `fetchChildRecords( $nodeId )` Runs SQL to get all the children of the node with ID $nodeId as a PDO result set.
public ezcTreeNodeList | `fetchChildren( $nodeId )` Returns all the children of the node with ID $nodeId.
public ezcTreeNodeList | `fetchPath( $nodeId )` Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.
public ezcTreeNodeList | `fetchSubtree( $nodeId )` Alias for fetchSubtreeDepthFirst().
public ezcTreeNodeList | `fetchSubtreeBreadthFirst( $nodeId )` Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.
public ezcTreeNodeList | `fetchSubtreeDepthFirst( $nodeId )` Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.
public void | `fixateTransaction( )` Fixates the transaction.
public int | `getChildCount( $nodeId )` Returns the number of direct children of the node with ID $nodeId.
public int | `getChildCountRecursive( $nodeId )` Returns the number of children of the node with ID $nodeId, recursively.
public int | `getPathLength( $nodeId )` Returns the distance from the root node to the node with ID $nodeId.
public bool | `hasChildNodes( $nodeId )` Returns whether the node with ID $nodeId has children.
public bool | `isChildOf( $childId , $parentId )` Returns whether the node with ID $childId is a direct child of the node with ID $parentId.
public bool | `isDescendantOf( $childId , $parentId )` Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.
public bool | `isSiblingOf( $child1Id , $child2Id )` Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).
public void | `move( $nodeId , $targetParentId )` Moves the node with ID $nodeId as child to the node with ID $targetParentId.
public void | `setRootNode( $node )` Sets a new node as root node, this also wipes out the whole tree.

### Inherited Methods

From ezcTreeDb
public ezcTreeDb | `ezcTreeDb::__construct()` Constructs a new ezcTreeDb object.
protected abstract ezcQueryInsert | `ezcTreeDb::createAddEmptyNodeQuery()` Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained.
protected ezcQuery | `ezcTreeDb::createAddNodeQuery()` Creates the query to insert/update an empty node in the database.
public ezcTreeNode | `ezcTreeDb::fetchParent()` Returns the parent node of the node with ID $id.
protected integer | `ezcTreeDb::generateNodeID()` This method generates the next node ID.
protected string | `ezcTreeDb::getParentId()` Returns the ID of parent of the node with ID $childId.
public ezcTreeNode | `ezcTreeDb::getRootNode()` Returns the root node.
public bool | `ezcTreeDb::nodeExists()` Returns whether the node with ID $id exists as tree node.
From ezcTree
public void | `ezcTree::accept()` Implements the accept method for visiting.
public abstract void | `ezcTree::addChild()` Adds the node $childNode as child of the node with ID $parentId.
protected void | `ezcTree::addTransactionItem()` Adds a new transaction item to the list.
public void | `ezcTree::beginTransaction()` Starts an transaction in which all tree modifications are queued until the transaction is committed with the commit() method.
protected void | `ezcTree::checkNodeId()` This method checks whether a node ID is valid to be used in a backend.
public void | `ezcTree::commit()` Commits the transaction by running the stored instructions to modify the tree structure.
public static void | `ezcTree::copy()` Copies the tree in $from to the empty tree in $to.
public ezcTreeNode | `ezcTree::createNode()` Creates a new tree node with node ID $nodeId and $data.
public abstract void | `ezcTree::delete()` Deletes the node with ID $nodeId from the tree, including all its children.
public abstract ezcTreeNodeList | `ezcTree::fetchChildren()` Returns all the children of the node with ID $nodeId.
public ezcTreeNode | `ezcTree::fetchNodeById()` Returns the node identified by the ID $nodeId.
public abstract ezcTreeNode | `ezcTree::fetchParent()` Returns the parent node of the node with ID $nodeId.
public abstract ezcTreeNodeList | `ezcTree::fetchPath()` Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.
public abstract ezcTreeNodeList | `ezcTree::fetchSubtree()` Alias for fetchSubtreeDepthFirst().
public abstract ezcTreeNodeList | `ezcTree::fetchSubtreeBreadthFirst()` Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.
public abstract ezcTreeNodeList | `ezcTree::fetchSubtreeDepthFirst()` Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.
protected abstract integer | `ezcTree::generateNodeID()` This method generates the next node ID.
public abstract int | `ezcTree::getChildCount()` Returns the number of direct children of the node with ID $nodeId.
public abstract int | `ezcTree::getChildCountRecursive()` Returns the number of children of the node with ID $nodeId, recursively.
public abstract int | `ezcTree::getPathLength()` Returns the distance from the root node to the node with ID $nodeId.
public abstract ezcTreeNode | `ezcTree::getRootNode()` Returns the root node.
public abstract bool | `ezcTree::hasChildNodes()` Returns whether the node with ID $nodeId has children.
public bool | `ezcTree::inTransaction()` Returns whether we are currently in a transaction or not
public bool | `ezcTree::inTransactionCommit()` Returns whether we are currently in a transaction commit state or not
public abstract bool | `ezcTree::isChildOf()` Returns whether the node with ID $childId is a direct child of the node with ID $parentId.
public abstract bool | `ezcTree::isDescendantOf()` Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.
public abstract bool | `ezcTree::isSiblingOf()` Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).
public abstract void | `ezcTree::move()` Moves the node with ID $nodeId as child to the node with ID $targetParentId.
public abstract bool | `ezcTree::nodeExists()` Returns whether the node with ID $nodeId exists.
public void | `ezcTree::rollback()` Rolls back the transaction by clearing all stored instructions.
public abstract void | `ezcTree::setRootNode()` Sets a new node as root node, this also wipes out the whole tree.

### Methods

#### create

static void create( $dbh , string $indexTableName , ezcTreeDbDataStore $store )

Creates a new ezcTreeDbParentChild object.

The different arguments to the method configure which database connection ($dbh) is used to access the database and the $indexTableName argument which table is used to retrieve the relation data from. The $store argument configure which data store is used with this tree.

It is up to the user to create the database table and make sure it is empty.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$dbh` | ezcDbHandler |
`$indexTableName` | string |
`$store` | ezcTreeDbDataStore |

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::create()` | Creates a new ezcTreeDbNestedSet object.

#### addChild

void addChild( string $parentId , $childNode )

Adds the node $childNode as child of the node with ID $parentId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$parentId` | string |
`$childNode` | ezcTreeNode |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::addChild()` | Adds the node $childNode as child of the node with ID $parentId.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::addChild()` | Adds the node $childNode as child of the node with ID $parentId.

#### addChildNodesBreadthFirst

void addChildNodesBreadthFirst( $list , string $nodeId )

Adds the children nodes of the node with ID $nodeId to the ezcTreeNodeList $list.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$list` | ezcTreeNodeList |
`$nodeId` | string |

#### countChildNodes

void countChildNodes( &$count , string $nodeId , int $count )

Adds the number of children with for the node with ID $nodeId nodes to $count, recursively.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$count` | int |
`$nodeId` | string |
`&$count` |  |

#### createAddEmptyNodeQuery

ezcQueryInsert createAddEmptyNodeQuery( )

Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained.

##### Redefinition of:

Method | Description
--- | ---
`ezcTreeDb::createAddEmptyNodeQuery()` | Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::createAddEmptyNodeQuery()` | Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained.

#### delete

void delete( string $nodeId )

Deletes the node with ID $nodeId from the tree, including all its children.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::delete()` | Deletes the node with ID $nodeId from the tree, including all its children.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::delete()` | Deletes the node with ID $nodeId from the tree, including all its children.

#### fetchChildRecords

PDOStatement fetchChildRecords( string $nodeId )

Runs SQL to get all the children of the node with ID $nodeId as a PDO result set.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

#### fetchChildren

ezcTreeNodeList fetchChildren( string $nodeId )

Returns all the children of the node with ID $nodeId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchChildren()` | Returns all the children of the node with ID $nodeId.

#### fetchPath

ezcTreeNodeList fetchPath( string $nodeId )

Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchPath()` | Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::fetchPath()` | Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.

#### fetchSubtree

ezcTreeNodeList fetchSubtree( string $nodeId )

Alias for fetchSubtreeDepthFirst().

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchSubtree()` | Alias for fetchSubtreeDepthFirst().

#### fetchSubtreeBreadthFirst

ezcTreeNodeList fetchSubtreeBreadthFirst( string $nodeId )

Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchSubtreeBreadthFirst()` | Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.

#### fetchSubtreeDepthFirst

ezcTreeNodeList fetchSubtreeDepthFirst( string $nodeId )

Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchSubtreeDepthFirst()` | Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::fetchSubtreeDepthFirst()` | Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.

#### fixateTransaction

void fixateTransaction( )

Fixates the transaction.

#### getChildCount

int getChildCount( string $nodeId )

Returns the number of direct children of the node with ID $nodeId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getChildCount()` | Returns the number of direct children of the node with ID $nodeId.

#### getChildCountRecursive

int getChildCountRecursive( string $nodeId )

Returns the number of children of the node with ID $nodeId, recursively.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getChildCountRecursive()` | Returns the number of children of the node with ID $nodeId, recursively.

#### getPathLength

int getPathLength( string $nodeId )

Returns the distance from the root node to the node with ID $nodeId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getPathLength()` | Returns the distance from the root node to the node with ID $nodeId.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::getPathLength()` | Returns the distance from the root node to the node with ID $nodeId.

#### hasChildNodes

bool hasChildNodes( string $nodeId )

Returns whether the node with ID $nodeId has children.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::hasChildNodes()` | Returns whether the node with ID $nodeId has children.

#### isChildOf

bool isChildOf( string $childId , string $parentId )

Returns whether the node with ID $childId is a direct child of the node with ID $parentId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$childId` | string |
`$parentId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::isChildOf()` | Returns whether the node with ID $childId is a direct child of the node with ID $parentId.

#### isDescendantOf

bool isDescendantOf( string $childId , string $parentId )

Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$childId` | string |
`$parentId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::isDescendantOf()` | Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::isDescendantOf()` | Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.

#### isSiblingOf

bool isSiblingOf( string $child1Id , string $child2Id )

Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).

##### Parameters:

Name | Type | Description
--- | --- | ---
`$child1Id` | string |
`$child2Id` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::isSiblingOf()` | Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).

#### move

void move( string $nodeId , string $targetParentId )

Moves the node with ID $nodeId as child to the node with ID $targetParentId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |
`$targetParentId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::move()` | Moves the node with ID $nodeId as child to the node with ID $targetParentId.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::move()` | Moves the node with ID $nodeId as child to the node with ID $targetParentId.

#### setRootNode

void setRootNode( $node )

Sets a new node as root node, this also wipes out the whole tree.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$node` | ezcTreeNode |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::setRootNode()` | Sets a new node as root node, this also wipes out the whole tree.

##### Redefined in descendants as:

Method | Description
--- | ---
`ezcTreeDbNestedSet::setRootNode()` | Sets a new node as root node, this also wipes out the whole tree.

Documentation generated by phpDocumentor 1.4.3