PHP code example of malith124 / materialized-path

1. Go to this page and download the library: Download malith124/materialized-path library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

malith124 / materialized-path example snippets


	Schema::create('page_table', function(Blueprint $table)
	{
		$table->engine = 'InnoDB';
		$table->increments('id');
		// parent id
        $table->integer('parent_id')->unsigned()->nullable();
        // depth path consisting of models id
        $table->string('path');
        // depth path consisting of models alias
        $table->string('real_path')->unique();
        // alias field
        $table->string('alias')->unique();
        // order position
        $table->integer('position')->default(0)->index();
        // depth level
        $table->integer('level')->default(0)->index();

		$table->foreign('parent_id')->references('id')->on('page_table')->onDelete('cascade');
	});

	// Make model is root
	with(new Page())->makeRoot();

	// Make model first children by parent id
	with(new Page())->makeFirstChildOf($parentId);

	// Make model last children by parent id
	with(new Page())->makeLastChildOf($parentId);

	// Make previous sibling
	$page = Page::find(2);
	$page->makePreviousSiblingOf(Page::find(1));

	// Make next sibling
	$page = Page::find(2);
	$page->makeNextSiblingOf(Page::find(1));

	// Update model data
	$page = Page::find(1);
	$page->position = 2;
	with(new Page())->updateNode($page);

	// Get parent
	Page::find(1)->parent()->get();
	
	// Get sibling
	Page::find(1)->sibling()->get();

	// Get childrens by depth
	Page::find(1)->childrenByDepth()->get();

	// Get parents by depth
	Page::find(1)->parentByDepth()->get();

	// Descendant check
	Page::find(1)->isDescendantOf(Page::find(2));

	// Ancestor check
	Page::find(1)->isAncestorOf(Page::find(2));

	// Is leaf
	Page::find(1)->isLeaf();

	// All leafs of model
	Page::allLeaf();

	// All roots of model
	Page::allRoot();

	// Get exploded path
	Page::find(1)->getExplodedPath();

	// Build real path by entities
	with(new Page())->buildRealPath($ids);

	// Build model tree
	Page::find(1)->buildTree();

	// Build model tree by parent id
	Page::find(1)->buildChidrenTree();