Laravel 4.2 - 增加时间戳的时间

GRo*_*ing 3 php laravel-4

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

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

是否有"Laravel"方式来做到这一点?要访问created_at值?或者我应该采用不同的方法吗?

cee*_*yoz 5

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

public function getExpiresAttribute() {
  $expires = clone $this->created_at;
  $expires->addHours(72);
  return $expires;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您希望能够查询该值(而不仅仅是计算显示),则需要将其存储在数据库中.要让它自动填充,您可以告诉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);
  }
}
Run Code Online (Sandbox Code Playgroud)