如何在 laravel 的数据库中添加迄今为止存在的天数?

How can I add days to date exist in database in laravel?

假设我有一个 table,其中保存了一些日期值,如下所示:

2022-02-02 00:00:00

如何在从数据库中检索到日期后增加该日期? 例如:

$importantDates = User::where('has_date', true)->pluck('date');
$increase = 2;
$changedDates = [];
foreach($importantDates as $date)
    $changedDates[] = ...; // add two days to the date

如果 $date 包含 '2022-02-02' 我如何才能将 '2022-02-04' 存储在 $changedDates 中?

如果日期列是碳对象那么

$user = \App\User::find(1);
$user->date = $user->date->addDays(1);
$user->save();

如果日期列不是碳对象那么

$user = \App\User::find(1);
$user->date = Carbon::parse($user->date)->addDays(2);
$user->save();

您好,您可以为此使用 Carbon 库:

    $date = Carbon::now();
    $dateInFuture = $date->addDays($numberOfDays);

假设您在 table 中有一个日期 created_at 作为时间戳。您可以使用 mutators 而不是每次都手动完成。

public function getCreatedAtAttribute($value)
{
    return Carbon::parse($value)->addDays(5);
}

这会在您每次获取时自动将 5 天添加到您的 created_at 列。

如果您不想修改该列,那么您可以做的是;在您的模型中 class 添加以下行;

protected $appends = ['future'];

public function getFutureAttribute()
{
    return Carbon::parse($this->attributes['created_at'])->addDays(5);
}

每当您在 eloquent 上查询它们时,这会将 future 属性附加到您的模型。