Multi select
Introduction
Section titled “Introduction”MultiSelect is a thin subclass of Select that sets .multiple(True) by default. Use it for tags, roles, and BelongsToMany-style attributes that still fit a fixed or relationship-backed option list. Everything on Select — search, preload, create option, min/max items, reorder — applies here.
Each variation below includes a short explanation, the fluent API to paste into your schema, and light/dark screenshots of the rendered control.
Basic multi select
Section titled “Basic multi select”Static options dehydrate as a list of selected keys. Cast the model column to a list/JSON array when persisting with Eloquent-style models.
MultiSelect.make('tags') .label('Tags') .options({ 'orbit': 'Orbit', 'forms': 'Forms', 'tables': 'Tables', })

Searchable multi select
Section titled “Searchable multi select”.searchable() adds a filter over the option set — the same API as single Select, including relationship AJAX search when wired with .relationship().
MultiSelect.make('technologies') .label('Technologies') .options({ 'tailwind': 'Tailwind CSS', 'alpine': 'Alpine.js', 'laravel': 'Laravel', 'livewire': 'Livewire', }) .searchable()

Limiting selection count
Section titled “Limiting selection count”.min_items() and .max_items() constrain how many options may be chosen. Validation fails when the selection is outside the range — useful for “pick up to three topics” UX.
MultiSelect.make('topics') .label('Topics') .options({ 'news': 'News', 'product': 'Product', 'engineering': 'Engineering', 'design': 'Design', }) .min_items(1) .max_items(3)

Reorderable selections
Section titled “Reorderable selections”.reorderable() lets users drag selected chips into order when sequence is meaningful (display priority, pipeline stages).
MultiSelect.make('tags') .label('Tags') .reorderable() .options({ 'orbit': 'Orbit', 'forms': 'Forms', 'tables': 'Tables', })

Relationship multi select
Section titled “Relationship multi select”Combine MultiSelect with .relationship() for BelongsToMany-style pivots. Add .searchable() and optionally .preload() / .options_limit() as on single Select.
MultiSelect.make('categories') .label('Categories') .relationship('categories', 'name') .searchable() .preload()

Closures work on .label(), .helper_text(), .placeholder(), .visible(), .disabled(), and .required() where applicable — see Form closures.