我有一张游戏时间表。在我的控制器中,我正在这样做;
$schedule = Schedule::where('season', '=', $season->id)
->where('date', '>', Carbon::now()->subDays(1))->get();
foreach ($schedule as $item) {
$date = new Carbon($item['date']);
$months[$date->format("F Y")][] = $item;
}
这允许我在我的刀片视图中执行此操作;
@foreach ($months as $month => $items)
<tr style="background-color: rgba(101, 101, 101, 0.4);">
<td colspan="5">
<strong>{{ $month }}</strong>
</td>
</tr>
@foreach ($items as $item)
<tr>
<td width="20%">{{ date('D, M j', strtotime ($item['date'])) }}/td>
<td width="20%">{{ $item['time'] }}</td>
<td width="25%"><a href="{{ url('team', $item['home_team_id']) }}">{{ $item['home_team'] }}</a></td>
<td width="25%"><a href="{{ url('team', $item['away_team_id']) }}">{{ $item['away_team'] }}</a></td>
<td width="10%"><a href="gamesheet/{{ $item['id'] }}" target="_blank"><i class="fa fa-print" aria-hidden="true"></i></a></td>
</tr>
@endforeach
@endforeach
到目前为止,这一点非常好,因为这会抓住月份并创建一个以月份为标题的明显行。
现在,我想尝试每周都这样做。得到这样的东西;
November 2016
Mon Nov 7 7:00PM Team A Team B
Mon Nov 7 8:00PM Team C Team D
<empty row here>
Mon Nov 14 7:00PM Team D Team A
Mon Nov 14 8:00PM Team B Team C
<empty row here>
我试过在我的控制器中定义一个星期数组,就像这样;
$weeks[$date->format("M j")][] = $item;
但是当月份发生变化时,它还需要结束循环。 有任何想法吗?我应该尝试在控制器中进一步循环吗?
谢谢!
答案 0 :(得分:0)
您可以使用if
循环内的foreach
语句来实现此目的。
您只想在嵌套foreach
循环的末尾添加此内容:
@if ($item == end($items))
<tr></tr>
@endif
将检查当前$item
是$items
中的最后一项。
这样的事情可以让你在那里大部分时间:
@foreach ($items as $item)
<tr>
<td width="20%">{{ date('D, M j', strtotime ($item['date'])) }}/td>
<td width="20%">{{ $item['time'] }}</td>
<td width="25%"><a href="{{ url('team', $item['home_team_id']) }}">{{ $item['home_team'] }}</a></td>
<td width="25%"><a href="{{ url('team', $item['away_team_id']) }}">{{ $item['away_team'] }}</a></td>
<td width="10%"><a href="gamesheet/{{ $item['id'] }}" target="_blank"><i class="fa fa-print" aria-hidden="true"></i></a></td>
</tr>
@if ($item == end($items))
<tr></tr>
@endif
@endforeach
虽然查看当前的foreach
循环,但您可能最终得到此结果:
November 2016
Mon Nov 7 7:00PM Team A Team B
Mon Nov 7 8:00PM Team C Team D
Mon Nov 14 7:00PM Team D Team A
Mon Nov 14 8:00PM Team B Team C
<empty row here>
因此,如果您可以按日期进一步打破foreach循环,那么您可以使用此方法实现您的目标。