第一次尝试,在foreach时,根据$row['season']
值增加label值
public function getNavItem(Request $request){
$arr = TasksData::selectRaw('year, season')
->distinct()
->orderBy('season', 'DESC')
->orderBy('year', 'ASC')
->get()
->toArray();
$collection = collect($arr);
$grouped = $collection->groupBy('year');
$grouped->toArray();
$result = [];
foreach ($grouped as $key => $value) {
$year['year'] = $key;
foreach ($value as $row) {
if($row['season']=='1') {
$season[]['value'] = $row['season'];
$season[]['label'] = '1-3月';
}
if($row['season']=='2') {
$season[]['value'] = $row['season'];
$season[]['label'] = '4-6月';
}
if($row['season']=='3') {
$season[]['value'] = $row['season'];
$season[]['label'] = '7-9月';
}
if($row['season']=='4') {
$season[]['value'] = $row['season'];
$season[]['label'] = '10-12月';
}
}
$year['season'] =$season;
$result[] =$year;
}
return $result;
}
返回的数据格式不是目标格式
{
season: [
0: {value: "4"},
1: {label: "10-12月"},
2: {value: "3"},
3: {label: "7-9月"},
4: {value: "2"},
5: {label: "4-6月"},
6: {value: "1"},
7: {label: "1-3月"}
],
year: 2018
}
第二次尝试,
/*
* 功能:返回季节的中文名
* 1.$season_id:传入的数字型字符串
* 2.$chinese: 季节的字符串
*/
public function mappingSeason($season_id) {
switch ($season_id){
case "1":
$chinese = "1-3月";
break;
case "2":
$chinese = "4-6月";
break;
case "3":
$chinese = "7-9月";
break;
case "4":
$chinese = "10-12月";
break;
default:
$chinese = $season_id;
break;
}
return $chinese;
}
public function getNavItem(Request $request){
$arr = TasksData::selectRaw('year, season')
->distinct()
->orderBy('season', 'DESC')
->orderBy('year', 'ASC')
->get()
->toArray();
$collection = collect($arr);
$grouped = $collection->groupBy('year');
$grouped->toArray();
$result = [];
$rowInResult = [];
foreach ($grouped as $year => $arr1) {
$rowInResult["season"] = [];
$rowInResult["year"] = $year;
foreach ($arr1 as $row) {
$seaonInfo = [];
$seaonInfo["value"] = $row["season"];
$seaonInfo["label"] = $this->mappingSeason($row["season"]);
$dateRangeArr = $this->getStartDateAndEndDate($year, $row["season"]);
$seaonInfo["startDate"] = $dateRangeArr[0];
$seaonInfo["endDate"] = $dateRangeArr[1];
$rowInResult["season"][] = $seaonInfo;
}
$result[] = $rowInResult;
}
return $result;
}
返回的数据格式满足预期
{
season: [
0: {value: "4",
label: "10-12月",
startDate: "2018-10-01",
endDate: "2018-12-31"
},
1: {
value: "3",
label: "7-9月",
startDate: "2018-07-01",
endDate: "2018-09-30"
},
2: {
value: "2",
label: "4-6月",
startDate: "2018-04-01",
endDate: "2018-06-30"
},
3: {
value: "1",
label: "1-3月",
startDate: "2018-01-01",
endDate: "2018-03-31"
}
],
year: 2018
}