harp-orm/materialized-path

Materialized path nesting for Harp ORM models

Installs: 115

Dependents: 2

Stars: 1

Watchers: 2

Language: PHP

0.3.1 2014-07-17 15:50 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version

Materialized path nesting for Harp ORM models.

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.

Usage

Add the Trait to your Model

use Harp\Harp\AbstractModel;
use Harp\MP\MaterializedPathTrait;

class Category extends AbstractModel
{
    public static function initialize($config)
    {
        MaterializedPathTrait::initialize($config);

        // Other initializations
        // ...
    }
}

Database Table:

┌─────────────────────────┐
│ 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:

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

Under BSD-3-Clause license, read LICENSE file.