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: | 2024-11-23 03:22:36 |
Package Statistics | |
---|---|
Total Downloads: | 637,323 |
Monthly Downloads: | 10,456 |
Daily Downloads: | 377 |
Total Stars: | 157 |
Total Watchers: | 3 |
Total Forks: | 81 |
Total Open Issues: | 34 |
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