在Laravel 4.2中,当使用eloquent在数据库中创建记录时,我们可以创建created_at和updated_at时间戳。
我想在我正在使用的表格中添加第三列,名为expires
,我想将该列的值设置为created_at + 72 hours
是否有" Laravel"这样做的方法?要访问created_at值?或者我应该采用不同的方法吗?
答案 0 :(得分:5)
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);
}
}