如果用户的帐户将在 5 天后到期,请通知用户 - Laravel

Notify users if their account is going to expire in 5 days later - Laravel

有很多用户在我的网站上购买高级帐户。我如何 select 帐户到期日恰好在 5 天后的用户并通知他们续订帐户?

app\console\kernel.php中添加以下功能,但不知道如何在查询中编写有关时间的代码。

/**
 * Define the application's command schedule.
 */

protected function schedule(Schedule $schedule)
{
    // $schedule->command('inspire')
    //          ->hourly();
    $schedule->call(function () {

        $users = User::where('expiration_time', '=', Carbon::now()->addDays(5))->get();

        //Notify related user about account emigrations
        Notification::send($users, new AccountExpiration());

    })->daily();
}

获取今天和 5 天后的用户。

User::whereBetween('expiration_time', [Carbon::now(), Carbon::now()->addDays(5)])->get();

或者

User::whereBetween('expiration_time', [date("Y-m-d"), date("Y-m-d", strtotime("+5 days"))])->get();

您的代码是正确的,唯一可能导致您的查询失败的是您的数据库 table 列类型。

如果您的 expiration_time 列类型是 DATE,您应该使用

Carbon::now()->addDays(5)->toDateString()

如果您的 expiration_time 列类型是 DATETIME,您应该使用

Carbon::now()->addDays(5)

希望对您有所帮助。