malith124/materialized-path
Composer 安装命令:
composer require malith124/materialized-path
包简介
Materialized path trait for Laravel 10
README 文档
README
Installation
- Add
langaner/materialized-pathtocomposer.json.
"langaner/materialized-path": "dev-master"
2)Run composer update to pull down the latest version of the package.
3)Now open up app/config/app.php and add the service provider to your providers array.
Langaner\MaterializedPath\MaterializedPathServiceProvider::class,
4)Add the trait to model what need tree implementation
use \Langaner\MaterializedPath\MaterializedPathTrait;
Migrations
Table migration example page_table:
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'); });
Available methods
// 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();
Configuration
Publish assets php artisan vendor:publish
This command initialize config file, located under app/config/packages/langaner/materialized-path/materialized_path.php.
Set with_translations to true if you need translation in result model. This option required translation pack https://github.com/dimsav/laravel-translatable
malith124/materialized-path 适用场景与选型建议
malith124/materialized-path 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 01 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「tree」 「path」 「laravel」 「eloquent」 「materialized」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 malith124/materialized-path 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 malith124/materialized-path 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 malith124/materialized-path 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
jsTree widget for yii2
Store your language lines in the database, yaml or other sources
JSONPath implementation for querying and updating JSON objects with support for json flattening into a table
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Doctrine2 behavior traits - slowhop fork
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-01-18