martinjuul/many-to-many

Laravel Nova 字段。

该软件包的官方仓库似乎已消失,因此软件包已被冻结。

1.0.1 2020-12-07 16:48 UTC

This package is auto-updated.

Last update: 2023-05-26 23:51:58 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;
  }),