| Package Data | |
|---|---|
| Maintainer Username: | Benjacho | 
| Maintainer Contact: | christianbfc97@gmail.com (Benjamin Flores) | 
| Package Create Date: | 2019-02-08 | 
| Package Last Update: | 2024-02-28 | 
| Language: | PHP | 
| License: | MIT | 
| Last Refreshed: | 2025-11-03 15:20:57 | 
| Package Statistics | |
|---|---|
| Total Downloads: | 757,306 | 
| Monthly Downloads: | 10,086 | 
| Daily Downloads: | 66 | 
| Total Stars: | 157 | 
| Total Watchers: | 3 | 
| Total Forks: | 85 | 
| Total Open Issues: | 35 | 
Belongs To Many field to represent many to many relationship in field. This Field allow attaching relationships easily. Also you can:

composer require benjacho/belongs-to-many-field
In the resource you need to pass:
use Benjacho\BelongsToManyField\BelongsToManyField;
public function fields(Request $request){
    return [
        ..., //If you are using with BelongsToMany native Field, put this field after
        BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role'),
    ];
}
| Function                      | Param          | default    | description                                                                                                                                                                  |
| ----------------------------- | --------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| optionsLabel                | String          | 'name'     | If you don't have column 'name' in your relationship table, use this method. This displays in index and detail Ejm (optionsLabel('full_role_name')).                                                                                                                  |
| isAction                    | Boolean         | true       | This method is when you need this field in actions, this puts height of field in 350px, and converts in action.                                                                                                                                        |
| setMultiselectProps         | Array           | []         | this method allows you to set properties for the vue multiselect component                                                                                                                            |
| dependsOn                   | String, String  | null, null | This method allows you to depend on belongsto field, this make an auto query                                                                                                 |
| canSelectAll                | String, Boolean | 'Select All', true | This method allows you to have a select all checkbox and display custom message                                                                                              |
| showAsListInDetail          | Boolean         | true       | This method allows you to display as list in detail                                                                                             |
IMPORTANT
use Benjacho\BelongsToManyField\BelongsToManyField;
public function fields(Request $request){
    BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role')->optionsLabel('full_role_name'),
}
public function handle(ActionFields $fields, Collection $models)
{
    //note that roles is the many to many relationship function name
    $values = array_column(json_decode(request()->roles, true),'id');
    
    foreach ($models as $model) {
        $model->roles()->sync($values);
    }
}
     BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role')
     ->options(\App\Role::all())
     ->setMultiselectProps([
        'selectLabel' => 'click for select',
        // and others from docs
     ]);
     BelongsTo::make('Association', 'association', 'App\Nova\Association'),
     BelongsToManyField::make('Participants', 'participant', 'App\Nova\Participant')
     ->dependsOn('association', 'association_id'),
     BelongsToManyField::make('Participants', 'participant', 'App\Nova\Participant')
     ->canSelectAll('Seleccionar Todo'),
     BelongsToManyField::make('Participants', 'participant', 'App\Nova\Participant')
     ->showAsListInDetail(),
This package implement all Laravel Validations, you need to pass the rules in rules method, rules are listed on laravel validations rules for arrays*.
use Benjacho\BelongsToManyField\BelongsToManyField;
public function fields(Request $request){
    return [
        ...,
        BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role')->relationModel(\App\User::class)->rules('required', 'min:1', 'max:5', 'size:3', new CustomRule),
    ];
}

For translations of this validations, use normal laravel validations translations.
Credits to: https://github.com/manmohanjit/nova-belongs-to-dependency