Человек получает очко после каждого месяца, проведенного на платформе. Поэтому, если он присоединится 3 июля, 3 августа он получит дополнительный балл.
Дата начала задается в БД в виде поля date
.
Если подумать об этом, кажется,Существуют разные сценарии, в которых я могу пропустить добавление этого пункта, если я просто сделаю что-то подобное в ежедневном хроне:
$startDate = new Carbon($startDateFromDb);
$today = new Carbon( date("Y-m-d"));
if ($startDate->day === $today->day) {
//Add point!
}
Например, человек начинает 30 ноября. Таким образом, 30 декабря он должен получить +1 балл (теперь у него всего 1). 30 января он должен получить +1 балл (теперь их всего 2).
Проблема будет в феврале, так как в феврале нет 30 дней, поэтому $startDate->day === $today->day
никогда не будет правдой в этом месяце.
Это также может произойти в любой месяц с 30 днями, если человек начинает с 31-го.
Есть ли у Carbon какой-либо метод, который позволил бы мне это проверить, или я должен просто сделать длинный, если/ еще с текущим месяцем / днями в месяце и моей собственной логикой?
Спасибо!