Laravel - 如何将 return 国定假日以特定格式发送至 json

Laravel - How to return National Holidays in a specific format before sending to json

在我的Laravel-5.8,我按照json的要求回国:

控制器:

$nationalholidays = HrHolidayDate::select('holiday_date')
    ->whereYear('created_at', '=', date('Y'))
    ->get()
    ->map(function ($nationalholiday) {
        return DateTime::createFromFormat('Y-m-d h:i:s', $nationalholiday->holiday_date)
                ->format('Y-m-d');
    });
return response()->json([
    'nationalholidays' => $nationalholidays,
]);

在视图blade中,我有console.log(nationalholidays);如:

创建:770 (2) [“2021-03-24”,“2021-07-08”]0:“2021-03-24”1:“2021-07-08”长度:2__proto__:数组(0)

如何把它改成这样:

natDays = [
  [1, 26], [2, 6], [3, 17],
  [4, 27], [5, 25], [6, 6],
  [7, 4], [8, 17], [9, 7],
  [10, 1], [11, 22], [12, 12]
];

所以它将由逗号分隔的日和月组成?

我想在 jQuery-UI 日期选择器中使用 reqult,如下所示:

function nationalDays(date) {
    for (i = 0; i < natDays.length; i++) {
      if (date.getMonth() == natDays[i][0] - 1
          && date.getDate() == natDays[i][1]) {
        return [false, natDays[i][2] + '_day'];
      }
    }
  return [true, ''];
}

您已经尝试过一次更改格式。

->map(function ($nationalholiday) {
    return DateTime::createFromFormat('Y-m-d h:i:s', $nationalholiday->holiday_date)
            ->format('Y-m-d');
});

所以您可以根据自己的喜好再次更改它。

->map(function ($nationalholiday) {        
    return [
        $nationalholiday->holiday_date->month,
        $nationalholiday->holiday_date->day
    ];
});

假设 holiday_date 是 Carbon class,如果不是,您可以将其投射到您的模型中。

// HrHolidayDate 模型

protected $casts = [
    'holiday_date' => 'date'
];

如果你需要数组,那么你必须像数组一样格式化它:

$nationalholidays = HrHolidayDate::select('holiday_date')
    ->whereYear('created_at', '=', date('Y'))
    ->get()
    ->map(function ($nationalholiday) {
        $datetime = DateTime::createFromFormat('Y-m-d h:i:s', $nationalholiday->holiday_date);
        return [
            $dateime->format('m'),
            $dateime->format('d'),
        ];
    });

return response()->json([
    'nationalholidays' => $nationalholidays,
]);

你也可以成为酷孩子之一并使用碳实例:

$nationalholidays = HrHolidayDate::select('holiday_date')
    ->whereYear('created_at', '=', date('Y'))
    ->get()
    ->map(function ($nationalholiday) {
        $datetime = Carbon::parse($nationalholiday->holiday_date);
        return [
            $dateime->month,
            $dateime->day,
        ];
    });

return response()->json([
    'nationalholidays' => $nationalholidays,
]);

如果没有理由将 return 作为数据集,我建议 return 将响应作为普通数组:

return response()->json($nationalholidays);