2017-02-24 60 views
0

我需要製作一個自定義字段,就像清單一樣,但是在一個表格中並且帶有第二個字段「order」。
這是我有:如何使用數據透視表中的額外列

  • 模型1:用關係「belongsToMany」條件
  • 模型2:子服務

這兩款機型在與具有兩個表products_service關係foreign_keys加上「訂單」列

我不明白的是:
如何保存額外的信息與揹包。

我知道,我可以用這樣的:

$user->roles()->updateExistingPivot($roleId, $attributes); 

,但我應該在哪裏放呢?

這裏是我的代碼:

class Condition extends Model 
{ 
    use CrudTrait; 
    use Searchable; 

    public function relService() 
    { 
    //dd($this->belongsToMany(SubService::class, 'conditions_service')->withPivot('weight')->withTimestamps()); 
      return $this->belongsToMany(SubService::class, 'conditions_service')->withPivot('weight')->withTimestamps(); 
    } 
} 

class SubService extends Model 
{ 
    use Searchable; 
    use CrudTrait; 

    public function conditions() 
    { 
    return $this->belongsToMany(Condition::class, 'conditions_service')->withPivot('weight')->withTimestamps(); 
    } 
} 

這裏是我的自定義字段類型:

<!-- select2 --> 
<div @include('crud::inc.field_wrapper_attributes') > 
    <label>{!! $field['label'] !!}</label> 
    @include('crud::inc.field_translatable_icon') 
    <?php $entity_model = $crud->getModel(); ?> 

    <div class="row"> 
     <div class="col-sm-12"> 
      <table id="crudTable" class="table table-bordered table-striped display"> 
       <thead> 
       <tr> 
        @if ($crud->details_row) 
         <th></th> <!-- expand/minimize button column --> 
        @endif 

        {{-- Table columns --}} 
        <th>Seleziona</th> 
        <th>Ordine</th> 
        {{--<th>Ordine <i class="fa fa-arrow-up" aria-hidden="true"></i></th> 
        <th>Ordine <i class="fa fa-arrow-down" aria-hidden="true"></i></th>--}} 
        {{--$tst = $connected_entity_entry->relService->whereIn('id', $connected_entity_entry->id)--}} 
       </tr> 
       </thead> 
       <tbody> 
       @foreach ($field['model']::all() as $connected_entity_entry) {{--var_dump((empty($connected_entity_entry->conditions->toArray())?"puppa":(empty($connected_entity_entry->conditions->whereIn('id', $connected_entity_entry->id)->toArray())?"puppa uguale":$connected_entity_entry->conditions->whereIn('id', $connected_entity_entry->id)))) --}} 
       {{-- dump($connected_entity_entry->getPriority($connected_entity_entry->id)) --}} 
       <tr> 
        <th scope="row"> 
         <div class="col-sm-4"> 
          <div class="checkbox"> 
           <label> 
            <input type="checkbox" 
              name="{{ $field['name'] }}[]" 
              value="{{ $connected_entity_entry->id }}" 

              @if((old($field["name"]) && in_array($connected_entity_entry->id, old($field["name"]))) || (isset($field['value']) && in_array($connected_entity_entry->id, $field['value']->pluck('id', 'id')->toArray()))) 
              checked="checked" 
              @endif > {!! $connected_entity_entry->{$field['attribute']} !!} 
           </label> 
          </div> 
         </div> 
        </th> 
        <td>{{[email protected]('crud::fields.number')--}} 

        </td> 
       </tr> 
       @endforeach 
       </tbody> 
      </table> 
     </div> 

     {{-- HINT --}} 
     @if (isset($field['hint'])) 
      <p class="help-block">{!! $field['hint'] !!}</p> 
     @endif 
    </div> 
</div> 

謝謝您的幫助! 戴夫

+0

我改進了q的格式在第二課結束時添加一個'}'字符來完成代碼示例。 – zx485

回答

0

我找到了解決辦法感謝密集的團隊與他拉請求(https://github.com/Laravel-Backpack/CRUD/pull/351

這裏是我的代碼更新:

CrudController:

$this->crud->addField([ 
     'label'  => 'Servizi legati', 
     'type'  => 'checklist_ordered', 
     'name'  => 'relService', 
     'entity' => 'relService', 
     'attribute' => 'title', 
     'model'  => "App\Models\SubService", 
     'pivot'  => true, 
     'pivotFields' => [ 
      'weight' => 'Ordinamento', 
     ], 
    ], 'update/create/both'); 

這裏是我的自定義字段類型:

<!-- select2 --> 
<div @include('crud::inc.field_wrapper_attributes') > 
    <label>{!! $field['label'] !!}</label> 
    @include('crud::inc.field_translatable_icon') 
    @if (isset($field['model'])) 
     <?php $entity_model = $crud->getModel(); 

     $pivot_entries = null; 
     if (isset($entry)) { 
      $pivot_entries = $entry->{$field['entity']}->keyBy(function ($item) { 
       return $item->getKey(); 
      }); 
     } 
     ?> 
     <div class="row"> 
      <div class="col-sm-12"> 
       <table id="crudTable" class="table table-bordered table-striped display"> 
        <thead> 
        <tr> 
         @if ($crud->details_row) 
          <th></th> <!-- expand/minimize button column --> 
         @endif 

         {{-- Table columns --}} 
         <th>Seleziona</th> 
         @foreach($field['pivotFields'] as $pivot_chunk) 
          <th>{{$pivot_chunk}}</th> 
         @endforeach 

        </tr> 
        </thead> 
        <tbody> 
        @foreach ($field['model']::all() as $connected_entity_entry) 
        <tr> 
         <th scope="row"> 
          <div class="col-sm-4"> 
           <div class="checkbox"> 
            <label> 
             <input type="checkbox" 
               name="{{ $field['name'] }}[]" 
               value="{{ $connected_entity_entry->id }}" 

               @if((old($field["name"]) && in_array($connected_entity_entry->id, old($field["name"]))) || (isset($field['value']) && in_array($connected_entity_entry->id, $field['value']->pluck('id', 'id')->toArray()))) 
               checked="checked" 
               @endif > {!! $connected_entity_entry->{$field['attribute']} !!} 
            </label> 
           </div> 
          </div> 
         </th> 
         <td> 
          @foreach(array_chunk($field['pivotFields'], 2, true) as $pivot_chunk) 
           @foreach ($pivot_chunk as $pivot_field => $pivot_name) 
            <?php 
            $pivot_attr = null; 
            if ($pivot_entries) { 
             if ($pivot_entries->has($connected_entity_entry->getKey())) { 
              $pivot  = $pivot_entries->get($connected_entity_entry->getKey())->pivot; 
              $pivot_attr = $pivot->getAttribute($pivot_field); 
             } 
            } 
            ?> 
            <input type="number" 
              name="{!! $pivot_field !!}[{{ $connected_entity_entry->getKey() }}]" 
              value="{{ $pivot_attr }}" @include('crud::inc.field_attributes') /> 
           @endforeach 
          @endforeach 
         </td> 
        </tr> 
        @endforeach 
        </tbody> 
       </table> 
      </div> 
      @endif 
      {{-- HINT --}} 
      @if (isset($field['hint'])) 
       <p class="help-block">{!! $field['hint'] !!}</p> 
      @endif 
     </div> 
</div> 
相關問題