所以我可以选择这些选项来自laravel Foreach
@foreach($courseMonth as $cm)->groupBy('description');
<optgroup label="{{ nameMonth($cm->month) }}">
@foreach($days as $date)
@if(date('m', strtotime($date['date'])) == $cm->month)
<option value="{{ date('d/m/Y', strtotime($date['date'])) ." - ". $date['hours'] }}">{{ $date['description'] . ' - ' . date('d/m/Y', strtotime($date['date'])) . ' - ' . $date['hours'] . ' ('. $date['total'] . 'h)'}}</option>
@endif
@endforeach
</optgroup>
<?php $i++;?>
@endforeach
这是选项。我想如果两个选项中的$date['description']
相同,则将两个选项组合在一起。更详细地讲,如果三个选项的描述为“工作”,则将所有选项组合在一起。
我在foreach前面试过了一个groupby
@foreach($courseMonth as $cm)->groupBy('description');
但这没做任何事情。选项表只有一行(例如:一行只有一个描述,但是在选择中可以有多个日期选项),所以我仅在两个选项中有相同描述时才将它们分组。
表结构:
-----------------------------------------------
| id | description | date | hours | total |
|---------------------------------------------|
| 4 | work |2019-23-4 | 14h | 6h |
| 5 | work |2019-23-5 | 13h | 5h |
| 6 | school |2019-23-5 | 13h | 5h |
-----------------------------------------------
因此前两个将出现在同一个选项中,最后一个将出现在select的第二个选项中。