dynamicnet / many-to-many
一个Laravel Nova字段。
1.0.1
2023-07-13 08:18 UTC
Requires
- php: >=7.1.0
Requires (Dev)
- laravel/nova: ~3.0
This package is auto-updated.
Last update: 2024-09-13 11:14:01 UTC
README
一个用于多态和非多态ManyToMany
关系的Laravel Nova字段。
目录
特性
- 在创建和更新页面中附加多态和非多态
ManyToMany
关系 - 在附加关系时编辑交叉表列
- 多次将一个资源附加到另一个资源上
安装
composer require martinjuul/many-to-many
简单用法
use Juul\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(),
];
}
交叉表
当附加资源时自定义交叉表列,可以使用字段的pivots
方法。然后使用fields
方法定义自定义交叉字段。现在,在附加资源时,将显示包含交叉字段的模态框。
use Juul\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(),
];
}
重复附件
可以使用duplicate
功能重复地将资源附加到另一个资源上。请参考以下示例
use Juul\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(),
];
}
多态关系
对于多态关系的使用与非多态相同。请参考以下示例
use Juul\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(),
];
}
或者
use Juul\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(),
];
}
使用
您可以使用fillUsing
来更改交叉列的值;然后您需要返回一个与您的交叉表匹配的关联数组。请注意;“fillUsing”方法适用于每个附件。请看以下示例
->fillUsing(function($pivots) {
if(isset($pivots['options']) && is_array($pivots['options'])) {
$pivots['options'] = json_encode($pivots['options']);
}
return $pivots;
}),