在 laravel 中的数组中添加日期名称格式

add day name format on array in laravel

我想把日期改成格式('l Y-m-d'),我的意思是在数组中添加日期名称,例如Friday 2022-04-01,是否可以在数组中添加日期名称它?日期还是2022-04-01的形式,如何添加日期名称? 当我 return 从 $holiday 得到这样的结果时

我的代码在index.blade.php

//to get date range from query start_date end_date
 @php
      $start_date = \Carbon\Carbon::parse(request()->query('start_date '))->format('Y-m-d');
      $end_date = \Carbon\Carbon::parse(request()->query('end_date'))->format('Y-m-d');
                            
      $dateRangePeriod = \Carbon\CarbonPeriod::create($start_date , $end_date);
      $dateRange = [];
      foreach ($dateRangePeriod as $key => $date) {
            $dateRange[] = $date->format('Y-m-d');
      }
 @endphp

 @foreach ($dateRange as $key => $range)
      @php

         $holiday = array_filter(json_decode($company_holiday, true), function ($var) use ($range) {
               return $var['date'] == $range;
         });

         $holiday = reset($holiday);

         dd($holiday);

       @endphp
  @endforeach

我在控制器中的代码

$company_holiday = CompanyHoliday::where('company_holiday.company_id', $company_id)
            ->whereDateBetween('company_holiday.date', $date_start, $date_end)
            ->get();

您可以为此使用访问器

https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor

// 在 CompanyHoliday 模型中

 //define accessor
public function getDayNameAttribute()
{
    return Carbon::parse($this->date)->format('l Y-m-d');
}


//get accessor in loop 
 $company_holiday->dayName

如果您希望 dayName 始终与 Holiday 一起使用,请在 CompanyHoliday 模型中使用 appends 属性

https://laravel.com/docs/8.x/eloquent-serialization#appending-values-to-json

protected $appends = ['day_name'];

在 blade 文件中进行更改。

    @php

        use Carbon\Carbon;


        $range = '2022-04-01';
        $date = Carbon::parse($range)->format('l Y-m-d'); // "Friday 2022-04-01"

    @endphp

更多格式参考:Carbon Docs