根据条件显示数据

Display data based on conditions

我允许上传文件。上传时选择了一个月。现在,在我看来,我传递了与上传相关的所有数据,每个月都是唯一的。本质上,我的观点最终是这样的

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>

通过视图传递的数据(其中也包含数据相关的月份),如何在适当的选项卡中显示它?

感谢任何建议

谢谢

最简单的方法可能是利用控制器中内置的 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>