Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Laravel Nestedset

Laravel Nestedset Laravel Package

vusys/laravel-nestedset

View on GitHub
Deep Wiki
Context7

A modern nested-set implementation for Laravel.

Frequently asked questions about Laravel Nestedset
How do I install vusys/laravel-nestedset in a Laravel 11+ project?
Run `composer require vusys/laravel-nestedset` and publish the migration with `php artisan vendor:publish --tag=nestedset-migrations`. Then, add the `NestedSet` trait to your Eloquent model and run the migration. Ensure your PHP version is 8.1+ for full compatibility.
Does this package support deep hierarchies (e.g., 15+ levels)?
Yes, but performance depends on database indexing. For deep trees, ensure `lft`/`rgt` columns are indexed. Test with your expected depth using the package’s query methods like `getDescendants()` to validate traversal speed. Consider Closure Tables if queries degrade significantly.
Can I use this for multi-tree hierarchies (e.g., separate category trees per tenant)?
Yes, the package supports multi-tree scoping via the `setTreeColumn()` method. Define a column (e.g., `tree_id`) to isolate hierarchies. This is useful for multi-tenant or segmented applications where trees shouldn’t intersect.
How does it handle concurrent writes (e.g., two users reordering nodes simultaneously)?
The package doesn’t include built-in locking, so race conditions can occur during writes. For high-concurrency scenarios, implement database-level locks (e.g., `SELECT ... FOR UPDATE`) or queue delayed tree rebuilds using Laravel’s queues to serialize mutations.
What’s the difference between Materialized Path and Adjacency List in this package?
Materialized Path stores the full path (e.g., `1/4/7`) in a single column, while Adjacency List uses `parent_id`. This package defaults to Materialized Path (via `lft`/`rgt` columns) for faster reads, but you can configure it for Adjacency List if your queries favor parent-child relationships.
Will this work with Laravel Scout for hierarchical search (e.g., autocomplete)?
Yes, integrate Scout with the package by indexing hierarchical data (e.g., `name`, `path`). Use `whereHasParent()` or `getDescendants()` in Scout’s `toSearchableArray()` to ensure search results respect the tree structure. Example: `$model->searchable(['name', 'path'])->scopes(['tree' => $treeId]).`
How do I migrate an existing database to use nested sets without downtime?
Use the package’s `NestedSet` trait to rebuild trees incrementally. For large datasets, chunk processing: loop through nodes, update `lft`/`rgt` in batches, and verify with `isValidTree()`. Example: `php artisan tinker` to manually test before full migration. Backup your data first.
Are there performance benchmarks for large datasets (e.g., 50K+ nodes)?
Benchmarks via Bencher show optimized traversal for read-heavy workloads. For 50K+ nodes, ensure `lft`/`rgt` columns are indexed and test with `getDescendants()` or `whereHasParent()`. Write-heavy workloads may need event-based updates (e.g., queue tree rebuilds) to avoid locking issues.
Can I use this with Laravel Nova for a tree-based UI?
Yes, pair this package with frontend libraries like `vue-nested-tree` or Nova toolkits. Expose hierarchical data via API (e.g., `getDescendants()`) and use Nova’s custom fields to render interactive trees. Example: `$model->with(['children' => function($query) { $query->orderBy('lft'); }])->get().`
What alternatives should I consider if this package doesn’t fit my needs?
For complex queries, evaluate Closure Tables (e.g., `spatie/laravel-closure-tables`) or recursive Common Table Expressions (CTEs) in raw SQL. If you need async support, check `kalnoy/nestedset` (older but battle-tested). For graph-like hierarchies, consider Neo4j or Laravel’s `hasManyThrough` with depth limits.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle