Nova vue-tree-select field for management nested category relations.

1.8.0 2021-09-02 11:05 UTC

This package is auto-updated.

Last update: 2023-11-29 03:23:28 UTC


License: MIT Latest Version on Github Total Downloads

Belongs To Many Field for simple manage Nested relation tree. Enables attaching relationships easily.



  • Validation
  • Show selected categories on Detail
  • Ability to pass your own tree
  • Ability to Delayed Loading data when tree has many records ( example 10k+ ).


composer require phoenix-lib/nova-nested-tree-attach-many


This field uses tree provided by kalnoy/nestedset package

This field uses riophae/vue-treeselect under the hood

use PhoenixLib\NestedTreeAttachMany\NestedTreeAttachManyField;
public function fields(Request $request)
    return [
        NestedTreeAttachManyField::make('Offer Categories',"categories","App\Nova\Category"),

Your model should has NodeTrait form package kalnoy/nestedset see RoadMap

class Category extends Model
    use NodeTrait;


Here are a few customization options

  • ->searchable(bool $searchable)
  • ->withIdKey(string $idKey = 'id') // - id column name in your nested model
  • ->withLabelKey(string $labelKey = 'name') // - label column name in your nested model
  • ->withActiveKey(string $activeKey) // - active_status column name in your nested model used for disable options
  • ->withChildrenKey(string $childrenKey) // - children key in your nested model
  • ->withPlaceholder(string $placeholder) // - placeholder in tree select
  • ->withMaxHeight(int $maxHeight)
  • ->withSortValueBy(string $sortBy) // - @see
  • ->withAlwaysOpen(bool $alwaysOpen) // - by default select is open, but you can change it behavior
  • ->withFlatten(bool $flatten) // - by default flatten is enabled, but you can change it behavior
  • ->useSingleSelect() // - ability for select only one value
  • ->useAsField() // - ability to write result to field without relations

Example of use with package whitecube/nova-flexible-content

use Whitecube\NovaFlexibleContent\Flexible;
use PhoenixLib\NovaNestedTreeAttachMany\NestedTreeAttachManyField;

 * Get the fields displayed by the resource.
 * @param  \Illuminate\Http\Request  $request
 * @return array
public function fields(Request $request)
    return [
        // ...

            ->addLayout('Simple content section', 'tree_section', [


This field also respects policies: ie Role / Permission

  • RolePolicy: attachAnyPermission($user, $role)
  • RolePolicy: attachPermission($user, $role, $permission)
  • PermissionPolicy: viewAny($user)


You can set min, max, size, required or custom rule objects

->rules('min:5', 'max:10', 'size:10', 'required', new CustomRule)`


Feel free to suggest changes, ask for new features or fix bugs yourself.

Hope this package will be useful for you.