У меня имеются записи в бд у которых есть поля from_date, to_date.
Задача сделать из этих записей выборку и найти в них наименьшую и наибольшую даты соответственно для полей from_date, to_date. C этим я справился, теперь нужно создать помесячный справочник, который будет укладываться в этот диапазон, если количество месяцев больше 12, оборачивать их по номеру года, в пределах которого, лежит дата месяца.
use Carbon\Carbon;
$from = new Carbon($collection->pluck('from_date')->min()); //@Carbon 2017-11-01 00:00:00.0
$to = new Carbon($collection->pluck('to_date')->max()); //@Carbon 2019-03-31 23:59:59.0
$dates = [];
while($from->lessThanOrEqual($to)) {
array_push($dates, $from->addMonths(1));
}
var_dump($dates); //~ 2 десятка записей @Carbon 2019-04-01 00:00:00.0
Почему карбон не мутирует? Если:
while($from->lessThanOrEqual($to)) {
echo $from->addMonths(1); //Каждая новая дата, корректно начинается с месяца следующего за предшествующим
}