У вас та же проблема, что и у меня. Я решил эту проблему, используя подход ниже.
Сначала я создал отдельную таблицу для year_wise_use_leave. В этой таблице я увеличиваю счет на каждый месяц, используя работу кроны. И непосредственно отображаются ежемесячные доступные отпуска из этой таблицы.
А для одобрения / отклонения действия будут напрямую отражены в этой таблице. так что если вы хотите получить ежегодный отпуск пользователя, это будет легко в это время.
Когда вводится ежегодный отпуск пользователя, вы должны разделить его на 12 и сохранить в таблице year_wise_use_leave.
Вот мой код работы крона
$userLeaves = UserAdditionalDetail::select('id', 'user_id', 'total_leaves')->whereHas('user', function ($query) {
$query->where('deleted_at', null);
})->get();
foreach ($userLeaves as $userLeave) {
$yearlyLeave = YearWiseUserLeave::where('user_id', $userLeave->user->id)->where('is_expired', 0)->first();
$yearlyLeave->total_leave += $userLeave->total_leaves / 12;
$yearlyLeave->save();
}
Здесь UserAdditionalDetail - моя таблица, где хранится ежегодный отпуск пользователя. И эта крона-работа вызывается каждый месяц.
Надеюсь, это поможет:)