@andrew-kondaurov

Как прибавить месяц к значению timestamps в бд для продления подписки?

В проекте Laravel у менять есть таблица Subscriptions в которой есть следующие данные:
id ; user_id ; end_date ; status ; creation_date
617e94f0ec7f8441339796.png

По кнопке продлить подписку необходимо прибавить месяц к end_date, снять деньги со счета пользователя и заменить эту запись в дб.
Вот функция этой кнопки:
public function buysubs(Request $request)
    {
        $amount = 100;
        $user_id = Auth::id();
        $permission = Permission::where('user_id', $user_id)->get()->first();
        $user_balance = Balance::where('user_id', $user_id)->get()->first();
        $Subscriptions = Subscription::where('user_id', $user_id)->get()->first();
        $enddate = Subscription::where('user_id', $user_id)->first('end_date');
      
        if (isset($user_balance->balance) && $user_balance->balance < '100') {
            echo 'нет деняг';
        }

if (!$Subscriptions) //отображается кнопка "купить подписку"
{
    $Subscriptions = new Subscription();
    $Subscriptions->user_id = $user_id;
    $Subscriptions->creation_date = date("Y-m-d H:i:s");
    $Subscriptions->end_date = date("Y-m-d H:i:s", strtotime("+1 month"));
    $Subscriptions->status = '1';
    $Subscriptions->save();
} // покупка подписки вроде работает
else ($Subscriptions->end_date > date("Y-m-d H:i:s"))
{
    //???
    $enddate = //???
    $Subscriptions->status = '1';
    $Subscriptions->save();
    $enddate->save();
}

$user_balance->balance -= $amount;
$transaction = Transaction::create ([
    'user_id' => $user_id,
    'amount' => '-100',
    'description' => 'Подписка на курс'
   ]);
$user_balance->save();

return view('dashboard', ['Subscriptions' => $Subscriptions], ['permission' => $permission]);

}

Как написать конструкцию else, чтобы прибавить месяц к уже существующей записи в БД при просроченной дате и дате еще не подошедшей к окончанию?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
$Subscriptions->end_date =  date("Y-m-d H:i:s",  strtotime($Subscriptions->end_date . " +1 month"));
$subscription->save();


PHP strtotime online
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@jazzus
$subscription->end_at = now()->addMonth();
$subscription->save();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы