Materialized Path
, (*1)
Materialized path nesting for Harp ORM models., (*2)
What is Materialized path? Here's a great explanation: http://bojanz.wordpress.com/2014/04/25/storing-hierarchical-data-materialized-path/
This package does not implement the most advanced implementation, but it works quite well as is., (*3)
Usage
Add the Trait to your Model, (*4)
use Harp\Harp\AbstractModel;
use Harp\MP\MaterializedPathTrait;
class Category extends AbstractModel
{
public static function initialize($config)
{
MaterializedPathTrait::initialize($config);
// Other initializations
// ...
}
}
Database Table:, (*5)
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Table: Category โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโค
โ id โ ingeter โ
โ name โ string โ
โ parentId* โ integer โ
โ path* โ string โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโ
* Required fields
Methods
It will add "parent" and "children" Rels to the repo. The model will get the convenience methods:, (*6)
Method |
Description |
getParent() |
Return the immidiate parent model |
setParent(AbstractModel $parent) |
Set the immidiate parent model, after save the changes are propogated to all the children |
getChildren() |
Get immidiate children. Returns a Models object |
isRoot() |
Boolean check if it is root (has parent) or not |
getDescendants() |
Returns all the children and the children's children. Models object |
getAnsestors() |
Return all the parents, including root. Models object |
isDescendantOf(AbstractModel $parent) |
Chech if a model is descendant |
isAnsestorOf(AbstractModel $parent) |
Chech if model is ansestor |
License
Copyright (c) 2014, Clippings Ltd. Developed by Ivan Kerin, (*7)
Under BSD-3-Clause license, read LICENSE file., (*8)