Как добавить название дня недели из периода даты - PullRequest
0 голосов
/ 29 июня 2018

Я использую Laravel и Carbon.

Я создаю функцию для добавления «доступности», например:

public function createAvailability(Request $request) {
    $availability = new Availability($request->all());
    $availability->save();

    return Redirect::back();
}

Я отправляю данные 'start' и 'end' для запроса, поэтому пример данных: $request->start = '01/07/2018'; $request->end= '22/07/2018';

и теперь я вставляю в базу данных такие данные:

enter image description here

Что я хочу сделать, это вставить данные в базу данных, например:

enter image description here

поэтому в течение первых 7 дней я хочу вставить имена с одинаковыми данными «начало» и «конец» ... или если дата начала 01/07 и дата окончания 03/07, я хочу вставить только 3 дни с названиями дней недели ...

Как я могу это сделать?

Также вот мой класс доступности с защищенными датами:

class Availability extends Model
{

    protected $dates = [ 'start','end' ];

    public function setStartAttribute($date) {
        $this->attributes['start']= Carbon::createFromFormat('d/m/Y', $date);
    }

    public function getStartAttribute($date){
        return (new Carbon($date))->format('d-m-Y');
    }

    public function setEndAttribute($date) {
        $this->attributes['end']= Carbon::createFromFormat('d/m/Y', $date);
    }

    public function getEndAttribute($date){
        return (new Carbon($date))->format('d-m-Y');
    }
}

1 Ответ

0 голосов
/ 29 июня 2018

Я думаю, что это может быть то, что вы хотите

function days($start, $end){
  $current = strtotime($start);
  $end = strtotime($end);
  while($current <= $end && $current <= ($current * 7))){ // go until the last day or seven days, whichever comes first
    $day = date("l", $current);
    $availability = new Availability();
    $availability->start_date = date('d/m/Y', $current);
    $availability->end_date = date('d/m/Y', $end);
    $availability->day_of_week = date("l", $current);
    $availability->save();
    $current = $current + 86400;
}
days($request->input('start'), $request->input('end'));   
...