dynamicnet/many-to-many

一个Laravel Nova字段。

1.0.1 2023-07-13 08:18 UTC

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;
  }),