Laravel 4.2 - 将时间添加到时间戳

Laravel 4.2 - Adding time to timestamp

在 Laravel 4.2 中,当在数据库中创建记录时,使用 eloquent,我们可以创建 created_at 和 updated_at 时间戳。

我想在我正在使用的 table 中添加第三列,称为 expires,我想将该列的值设置为 created_at + 72 hours

有没有 "Laravel" 方法来做到这一点?要访问 created_at 值?或者我应该以不同的方式处理这个问题?

Laravel 的 created_at 是 Carbon 的一个实例。使用访问器,我们可以像这样填充 $model->expires

public function getExpiresAttribute() {
  $expires = clone $this->created_at;
  $expires->addHours(72);
  return $expires;
}

如果您希望能够查询 值(而不是仅仅为了显示而计算),您需要将其存储在数据库中。要让它自动填充,您可以告诉 Laravel 它是一个日期列并使用观察者:

public function getDates(){
  return ['created_at', 'updated_at', 'expires'];
}

public static function boot() {
  parent::boot();

  self::creating(function($model) {
    $model->expires = clone $model->created_at;
    $model->expires->addHours(72);
  }
}