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

Posted

技术标签:

【中文标题】Laravel 4.2 - 将时间添加到时间戳【英文标题】:Laravel 4.2 - Adding time to timestamp 【发布时间】:2015-03-09 12:54:27 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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);
  

【讨论】:

谢谢。我不知道我可以这么容易地增加时间。这帮助很大:) @GRowing Laravel 使用github.com/briannesbitt/Carbon,这太棒了 我花了一天时间阅读文档。绝对棒极了!并且及时(相对于我的项目),所以我不会去做 Carbon 已经做过的各种不必要的工作。

以上是关于Laravel 4.2 - 将时间添加到时间戳的主要内容,如果未能解决你的问题,请参考以下文章

将浮点列添加到时间戳类型列(秒+毫秒)

如果时间戳不存在,有没有办法将秒添加到时间戳中?

Redshift - 将时区偏移量(Varchar)添加到时间戳列

将 SQL Server 中 datetime 字段的默认值添加到时间戳

如何在 PL/SQL 中将一纳秒添加到时间戳

将五个小时添加到时间戳字段