anrail/many-to-many is a Laravel package for a laravel nova field. fork armincms/many-to-many.
It currently has 0 GitHub stars and 35 downloads on Packagist (latest version v0.4.1).
Install it with composer require anrail/many-to-many.
Discover more Laravel packages by anrail
or browse all Laravel packages to compare alternatives.
Last updated
A Laravel Nova field for polymorphic and non-polymorphic ManyToMany relationships.
ManyToMany relationships in
the creation and update pagecomposer require anrail/many-to-many
use Armincms\Fields\BelongsToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
BelongsToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->pivots(),
];
}
To search relation value instead of select it; you can use the searchable method on the field.
For customizing the pivot columns when attaching a resource you can use the pivots method of the field. then define your custom pivot fields with the fields method. now, when attaching a resource; a Modal that contains the pivot fields will be displayed to you.
use Armincms\Fields\BelongsToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
BelongsToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->pivots(),
];
}
You can use the duplicate feature for repetitively attach a resource to another resource. follow the example:
use Armincms\Fields\BelongsToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
BelongsToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->duplicate(),
];
}
Using for the polymorphic relationships is like non-polymorphic. follow the example:
use Armincms\Fields\MorphToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
MorphToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->duplicate()
->pivots(),
];
}
or
use Armincms\Fields\MorphedByMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
MorphedByMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->duplicate()
->pivots(),
];
}
You can use fillUsing to change the pivot-columns values; Then you need to return an associative array that matches your pivot table.
Be careful; the "fillUsing" method applies to each attachment. see the following example:
->fillUsing(function($pivots) {
if(isset($pivots['options']) && is_array($pivots['options'])) {
$pivots['options'] = json_encode($pivots['options']);
}
return $pivots;
}),