首页 > 解决方案 > 如何在 Carbon 中剩余天数

问题描述

我想向用户发送两次电子邮件:在某个到期日期前 3 天和 1 天。因此,对于13/04/2019的到期日期,我想在10/04/201912/04/2019发送电子邮件。

我有这段代码,但它不能正常工作:

if($expireDate <= Carbon::now()->subDays(3) && $expireDate <= Carbon::now()->subDays(1)){
  Mail::to($userEmail)->send(new UserPlanNearExpire($planName, $expireDate, $user));
}

更新

这是我的工作处理方法

public function handle()
{
    $userCurrentType = User::get();
    foreach($userCurrentType as $user)
    {
        $userEmail = $user->email;
        $user = $user;

        foreach($user->invoices as $invoice){
            $planName = $invoice->type->name;
            $expireDate = $invoice->plan_expire;
        }
        //sending email
        $expireDate = new Carbon($expireDate);
        $days = $expireDate->diffInDays();
        if ($days === 1 or $days === 3) {
            Mail::to($userEmail)->send(new UserPlanNearExpire($planName, $expireDate, $user));
        }
    }
}

逻辑:

这是我的数据库,通常我应该为具有 id 的用户收到两封电子邮件,1因为2他们是1并且3距离过期日期还有几天。

一

我得到什么:

我只收到第一个用户的一封电子邮件,首先我想可能是因为我的邮件代码在里面foreach (loop)但是当我把它移出循环时它没有发送任何邮件:)

二

任何想法?

标签: phpphp-carbon

解决方案


推荐阅读