我的所有比赛都是由start_date排序的,但是我希望日期不会显示,而是将日期分开,如下所示:
$matches=Match::orderBy('start_date','desc')->get();
foreach($matches as $match)
{
$match->team1;
$match->team2;
$match->start_date;
}
这给出了:
Team1
Team2
2016-9-28
Team3
Team4
2016-9-28
Team5
Team6
2016-9-28
...
相反,我想要
2016-9-28
Team1
Team2
Team3
Team4
Team5
Team6
....
2016-9-29
Team1
Team2
Team3
....
group_by start_date可能是?
答案 0 :(得分:2)
使用groupBy
对生成的集合进行分组。
$matchGroups = Match::orderBy('start_date','desc')->get()->groupBy('start_date');
如果start_date
是碳日期,您可以尝试
$matchGroups = Match::orderBy('start_date','desc')->get()->groupBy(function($item) {
return $item->start_date->format('Y-n-j');
});
在你看来
@foreach ($matchGroups as $startDate => $matches) {
{{ $startDate }}
@foreach ($matches as $match) {
{{ $match->team1 }}
{{ $match->team2 }}
@endforeach
@endforeach
答案 1 :(得分:1)
$matches = Match::select(DB::raw('GROUP_CONCAT(team) AS teammate'), 'start_date')
->groupBy('start_date');
->get()
->toArray();
toArray是可选的,结果应为:
array:2 [
0 => array:2 [
"start_date" => "2016-9-28"
"teammate" => "Team1,Team2, Team3, Team4, Team5, Team6"
]
1 => array:2 [
"start_date" => "2016-9-29"
"teammate" => "Team1,Team2, Team3"
]
]
这是你寻求的结果吗?