eminiarts/nova-relationship-selector
A Laravel Nova field that adds a searchable relationship selector to forms. It lets users pick related Eloquent models from a dropdown, making belongsTo and belongsToMany inputs easier without manually entering IDs or keys.
This package targets Laravel Nova and provides a fluent way to place a field inside a tabbed layout, integrating with eminiarts/nova-tabs.
composer require <this-package> eminiarts/nova-tabs.->inTabs():use Eminiarts\Tabs\Tabs;
public function fields(Request $request)
{
return [
Tabs::make('Details', [
ID::make()->sortable(),
Text::make('Name')->inTabs('Main'),
]),
];
}
First thing to check after install: run a resource with a single tab and confirm the field renders inside it (not duplicated in the default/untabbed area). That single render is the fastest proof the wiring and the inTabs() helper agree.
->inTabs('Tab Label') on any fields that should land in a specific tab instead of the default group. Keep the tab label consistent with the Tab::make(...) / Tabs::make(...) key used in the same resource.->inTabs() remain in the default panel — useful for identity fields (ID, timestamps) that should stay outside the tabbed area.->rules(...), ->sortable(), ->hideFromIndex(), etc.). Apply inTabs() last for readability.$this->statusField()), pass the tab name in as an argument so the same field can be reused across resources with different tab layouts.inTabs() string doesn't exactly match a tab key/label, the field can end up in the default area with no error. Verify labels character-for-character.fields(), so group fields by tab in the array for predictable rendering.inTabs() only affects form/detail layout. Index columns are unaffected — don't expect the tabs to change the index table.nova-tabs pins to specific Nova majors. Confirm the compatibility matrix of both packages before upgrading Nova.->inTabs() — if the field reappears, the tab label is wrong or the tabs group isn't resolving. If it's missing in both cases, the issue is upstream in the tabs package.Field::macro('inDetailsTab', fn() => $this->inTabs('Details'))) to centralise tab names and avoid string drift across resources.How can I help you explore Laravel packages today?