У меня есть массив углеродных объектов, которые передаются в такое представление:
return view('booking.choose-days')->with(['weekDays' => $weekDays]);
Чтобы проверить, что все в порядке, я сделал DD-массив и увидел, что массивы дат правильно передаются:
array:14 [▼
0 => Carbon {#252 ▼
+"date": "2017-04-11 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
1 => Carbon {#257 ▼
+"date": "2017-04-12 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
2 => Carbon {#256 ▼
+"date": "2017-04-13 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
3 => Carbon {#255 ▼
+"date": "2017-04-14 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
...and so forth
При переборе массива в Blade с использованием следующего (полный html опущен):
@foreach ($weekDays as $key => $weekDay)
<tr id="{{ $key }}">
<td>
{{ $weekDay }}
</td>
</tr>
@endforeach
Это дает ожидаемый результат:
2017-04-11 00:00:00
2017-04-12 00:00:00
2017-04-13 00:00:00
2017-04-14 00:00:00
2017-04-15 00:00:00
...and so forth
Однако, когда вместо этого выводится:
@foreach ($weekDays as $key => $weekDay)
<tr id="{{ $key }}">
<td>
{{ $weekDay->dayOfWeek }} // now accessing a property
</td>
</tr>
@endforeach
Я получаю вывод:
1
1
2
2
2
Вместо ожидаемого 1,2,3,4,5
для Monday, Tuesday, Wednesday
и т.д.
Таким образом, даты в массиве верны, когда var_dumped
соответствует objects
, но при доступе к такому свойству, как dayOfWeek
, это дает мне неправильные свойства.
Даты генерируются путем первого чтения two timestamps
из URL-адреса — start date
и end date
. Оба эти значения затем сохраняются в переменных и отправляются в функцию для удаления всех дат выходного дня.
Это вызов функции:
$weekDays = getWeekDays(Carbon::createFromTimestamp($startDate), Carbon::createFromTimestamp($endDate));
И вот функция:
function getWeekDays(Carbon $startDate, Carbon $endDate)
{
for($date = $startDate; $startDate->lte($endDate); $startDate->addDay()) {
if ($date->isWeekDay()) {
$weekdays[] = clone $date;
}
}
return $weekdays;
}
Есть идеи, почему?
Спасибо
$b = $a->addDay();
, это также изменит переменную $a, а $a и $b будут одной и той же переменной! Покажите нам, как вы получаете даты? - person lewis4u   schedule 11.04.2017