2017-01-31 7 views
0

Разрешаю файл загружаться. Во время загрузки выбирается месяц. Теперь, по моему мнению, я передаю все данные, относящиеся к загрузке, уникальные для месяца. По существу, на мой взгляд заканчивается что-то вроде этогоОтображать данные на основе условий

array:2 [▼ 
    0 => {#235 ▼ 
    +"id": 11 
    +"upload_month": "Janaury" 
    +"MAX(created_at)": "2017-01-30 13:25:59" 
    } 
    1 => {#236 ▼ 
    +"id": 10 
    +"upload_month": "April" 
    +"MAX(created_at)": "2017-01-30 13:22:39" 
    } 
] 

Теперь я ищу, чтобы отобразить данные независимо от месяца у меня в закладках. Я удалил большую часть месяца для демонстрационных целей

<ul class="nav nav-tabs"> 
    <li class="active"><a href="#January" data-toggle="tab">JAN</a></li> 
    <li><a href="#February" data-toggle="tab">FEB</a></li> 
    <li><a href="#March" data-toggle="tab">MAR</a></li> 
</ul> 

<div class="tab-content"> 
    <div class="tab-pane active" id="January"> 
     <h3>Jan Data</h3> 
    </div> 
    <div class="tab-pane" id="February"> 
     <h3>Feb Data</h3> 
    </div> 
    <div class="tab-pane" id="March"> 
     <h3>Mar data</h3> 
    </div> 
</div> 

С данными, принявшие видом (который содержит месяц, что данные связывающие тоже), как я могу отобразить его на вкладке наших правил?

Любые советы оценили

Спасибо

ответ

1

Самый простой способ, вероятно, будет использовать встроенный в groupBy метод в контроллере:

// instead of 
// return $someDataObject; 
return $someDataObject->groupBy('upload_month'); 

Тогда в представлении вы можете Foreach на месяц ключи:

<ul class="nav nav-tabs"> 
    <li class="active"><a href="#January" data-toggle="tab">JAN</a></li> 
    <li><a href="#February" data-toggle="tab">FEB</a></li> 
    <li><a href="#March" data-toggle="tab">MAR</a></li> 
</ul> 

<div class="tab-content"> 
    <div class="tab-pane active" id="January"> 
     <h3>Jan Data</h3> 
     @foreach($collectionOfData['January'] as $monthData) 
      {{ $monthData->id }} 
     @endforeach 
    </div> 
    <div class="tab-pane" id="February"> 
     <h3>Feb Data</h3> 
     @foreach($collectionOfData['February'] as $monthData) 
      {{ $monthData->id }} 
     @endforeach 
    </div> 
    <div class="tab-pane" id="March"> 
     <h3>Mar data</h3> 
     @foreach($collectionOfData['March'] as $monthData) 
      {{ $monthData->id }} 
     @endforeach 
    </div> 
    ..... 
</div> 

Точная реализация зависит от вашего кода, но это должно вас начать.

Можно даже упростить код более, если вы сделали некоторые сортировки на заднем конце (так что месяцы были в правильном порядке), что-то вроде:

return $someDataObject->groupBy('upload_month')->sortBy('someDateRepresentationOfTheMonthTheDataRepresents'); 

И в представлении:

<ul class="nav nav-tabs"> 
    @foreach($collectionOfData as $monthName => $monthData) 
     {{-- This uses the $loop variable which is only available in Laravel 5.3 and above --}} 
     <li class="<?php if($loop->first) { echo 'active'; } ?>"><a href="#{{ $monthName }}" data-toggle="tab"><?php strtoupper(date('M', strtotime($monthName))); ?></a></li> 
    @endforeach 
</ul> 

<div class="tab-content"> 
    @foreach($collectionOfData as $monthName => $monthData) 
     {{-- This uses the $loop variable which is only available in Laravel 5.3 and above --}} 
     <div class="tab-pane <?php if($loop->first) { echo 'active'; } ?>" id="{{ $monthName }}"> 
      <h3><?php date('M', strtotime($monthName)); ?> Data</h3> 
      @foreach($monthData as $monthDataPieces) 
       {{ $monthDataPieces->id }} 
      @endforeach 
     </div> 
    @endforeach 
</div>