price; $lists = DB::table('subscriptions') ->join('users', 'subscriptions.user_id', '=', 'users.id') ->selectRaw('subscriptions.user_id, MAX(subscriptions.ends_at) as last_time, users.autosubscription_site') ->groupBy('subscriptions.user_id', 'users.autosubscription_site') ->havingRaw('MAX(subscriptions.ends_at) <= ?', [now()]) ->having('users.autosubscription_site', true) ->get(); foreach($lists as $list){ $balance = SubscriptionService::calculate($list->user_id); $ends_at = Carbon::now()->addMonths(); if ($price > $balance) { echo 'Недостаточно средств ' . $list->user_id . PHP_EOL; DB::table('users') ->where('id', $list->user_id) ->update(['autosubscription_site' => false]); continue; } $sub = new Subscription; $sub->user_id = $list->user_id; $sub->package_id = $plan->id; $sub->price = $price; $sub->ends_at = $ends_at; $sub->status = 'complete'; //YSV ENUM! $sub->save(); $point = new Point; $point->user_id =$list->user_id; $point->point = $price; $point->type = 'Оплата за подписку'; //YSV ENUM! $point->direction = DirectionEnum::EXPENSE(); $point->save(); } return 0; } }