【发布时间】:2015-03-09 12:54:27
【问题描述】:
在 Laravel 4.2 中,当在数据库中创建记录时,使用 eloquent,我们可以创建 created_at 和 updated_at 时间戳。
我想在我正在使用的名为expires 的表中添加第三列,并且我想将该列的值设置为created_at + 72 hours
有没有“Laravel”的方式来做到这一点?访问 created_at 值?或者我应该以不同的方式处理这个问题?
【问题讨论】:
在 Laravel 4.2 中,当在数据库中创建记录时,使用 eloquent,我们可以创建 created_at 和 updated_at 时间戳。
我想在我正在使用的名为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);
}
}
【讨论】: