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

1.6.0 2021-03-03 08:25 UTC

This package is auto-updated.

Last update: 2021-05-01 00:20:59 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


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.